Abbiamo un sito di produzione JQM ecco come facciamo le cose - e sì altri potrebbero non essere d'accordo ma abbiamo trovato che questo funziona per un sito molto grande.
Usa più pagine HTML singoli, un grande modello di multi-pagina sconfigge i vantaggi di Ajax carico del jQm dal momento che stai caricando tutto il codice HTML in partenza (a meno che il sito è piccolo)
È sicuramente vuoi usare il caricamento Ajax, jQM inserisce solo il codice nel tuo <div data-role="page">
MA questo complica il tuo JS vedi sotto
Non hai bisogno di più file JS, MA devi caricare tutto il tuo JS all'inizio, lo facciamo facendo due cose: 1. inseriamo un listener on
nella root del documento e ascoltiamo gli eventi pageinit/pageshow. Ogni volta che una pagina viene caricata, questi vengono attivati, hai anche un utile riferimento alla pagina corrente, e puoi usare un attr sulla pagina per determinare quale pagina era. 2. 2. Avere tutto il JS in un pacchetto di qualche tipo (si spera che tu stia utilizzando PHP, CF o qualcosa del genere) e inserirlo in ogni pagina, in questo modo, indipendentemente dal punto di accesso che un utente visita nel tuo sito mobile, ottengono tutto il codice caricato
il lato negativo è che tutto il JS è caricato inizialmente, ma ridotte di noi troviamo non è un grosso problema, e se è davvero un problema guardare in RequireJS - più si fa il debug di un gioco da ragazzi dal momento che la JS è tutto lì, possiamo facilmente usare il debugger e posizionare i breakpoint. Se caricate JS dinamicamente su ogni pagina, aumentate i dati necessari per il ritorno su ogni pagina di transistione e avete brutto perché ricaricate JS ridondante ed è difficile eseguire il debug di JS dinamico.
$(document).on('pageinit pageshow', 'div:jqmData(role="page"), div:jqmData(role="dialog")', function(oEvent){
var pageType = $(this).data('pagetype');
//handle pageinit/pageshow (oEvent.type) for each pageType
fonte
2012-02-20 21:01:10
Molto poche cose che hanno a che fare con le "migliori pratiche" hanno un "voto unanime". – Chad