Con un'applicazione a singola pagina, in cui cambio l'hash e carico e cambio solo il contenuto della pagina, sto cercando di decidere come gestire il codice JavaScript che ognuno " pagina "potrebbe essere necessario.Best practice per la gestione di JavaScript su un'applicazione a singola pagina
Ho già un modulo Cronologia che monitora l'hash della posizione che potrebbe apparire come domain.com/#/company/about
e una classe Page che utilizzerà XHR per ottenere il contenuto e inserirlo nell'area del contenuto.
function onHashChange(hash) {
var skipCache = false;
if(hash in noCacheList) {
skipCache = true;
}
new Page(hash, skipCache).insert();
}
// Page.js
var _pageCache = {};
function Page(url, skipCache) {
if(!skipCache && (url in _pageCache)) {
return _pageCache[url];
}
this.url = url;
this.load();
}
La cache deve consentire alle pagine che sono già state caricate di saltare l'XHR. Sto anche memorizzando il contenuto in un documentoFragment e poi estraendo il contenuto corrente dal documento quando inserisco il nuovo Page
, quindi il browser dovrà solo creare il DOM per il frammento una volta.
Saltare la cache potrebbe essere desiderato se la pagina contiene dati sensibili al tempo.
Ecco cosa ho bisogno di aiuto per decidere su: È molto probabile che qualsiasi pagina caricata abbia il proprio codice JavaScript per controllare la pagina. Come se la pagina usasse le Tab, avesse bisogno di una presentazione, avesse una sorta di animazione, avesse un modulo Ajax o che cosa tu abbia.
Qual è esattamente il modo migliore per andare in giro a caricare quel JavaScript nella pagina? Includere i tag di script nel documentoFragment che torno dall'XHR? Cosa succede se ho bisogno di saltare la cache e di scaricare nuovamente il frammento. Sento che lo stesso identico JavaScript chiamato una seconda volta potrebbe causare conflitti, come la redeclaring delle stesse variabili.
Sarebbe il modo migliore di collegare gli script alla testa quando si afferra il nuovo Page
? Ciò richiederebbe alla pagina originale di conoscere tutte le risorse di cui ogni altra pagina potrebbe aver bisogno.
E oltre a conoscere il modo migliore per includere tutto, non dovrò preoccuparmi della gestione della memoria e delle possibili perdite di caricamento di così tanti diversi bit JavaScript in una singola istanza di pagina?
Che cos'è un'app a pagina singola? –
Dove si carica la prima pagina dal server e tutto il resto utilizza XHR, anziché le richieste di una pagina intera. Facebook è un esempio. – seanmonstar
jQuery è tuo amico. Compralo da bere –