使用單頁面應用程序,我在其中更改散列並加載並更改頁面內容,我試圖決定如何管理JavaScript,每個「頁面「可能需要。管理單頁面應用程序中的JavaScript的最佳實踐
我已經有一個監控位置哈希的模塊,它可能看起來像domain.com/#/company/about
,而Page類將使用XHR獲取內容並將其插入到內容區域。
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();
}
緩存應該讓已經加載的頁面跳過XHR。我還將內容存儲到documentFragment中,然後在插入新的Page
時將當前內容拉出文檔,因此瀏覽器只需構建一次片段的DOM。
如果頁面中包含時間敏感數據,則可能需要跳過緩存。
以下是我需要幫助的決定:很有可能任何加載的頁面都會有一些自己的JavaScript來控制頁面。就像頁面將使用Tabs一樣,需要幻燈片放映,具有某種動畫形式,具有ajax形式或者擁有你自己的東西。
什麼是將JavaScript加載到頁面的最佳方式?將腳本標籤包含在我從XHR中獲取的documentFragment中?如果我需要跳過緩存並重新下載片段,該怎麼辦?我覺得第二次調用完全相同的JavaScript可能會導致衝突,例如重新聲明相同的變量。
當抓取新的Page
時,更好的方法是將腳本附加到頭部嗎?這將要求原始頁面知道每個其他頁面可能需要的所有資產。
除了知道包含所有內容的最佳方式之外,我是否也不需要擔心內存管理,以及將很多不同的JavaScript位加載到單個頁面實例中的可能泄漏?
什麼是單頁面應用程序? – 2010-05-06 16:49:44
從服務器加載到第一頁的地方,其他所有內容都使用XHR而不是整頁請求。 Facebook就是一個例子。 – seanmonstar 2010-05-06 16:52:08
jQuery是你的朋友。買一杯飲料。 – 2010-05-06 16:54:31