2014-10-08 69 views
0

我們在這裏有一個奇怪的框架。我們有不同的功能,試圖添加依賴庫。如何只添加一次JavaScript庫?

我的問題是,有沒有辦法只添加一次庫?

例如,如果jQuery已經加載,是否有一種通用的方式不再加載jQuery?

基於URL嗎?

我在尋找類似於require_once在PHP中實現的結果。

+0

當你說「加載」時,你的意思是該文件只下載一次,還是全局jQuery對象只實例化一次? – lxg 2014-10-08 22:45:17

+0

'if(typeof jQuery =='undefined'){// jquery未加載,因此加載}' – adaam 2014-10-08 22:45:50

+0

Plain JS不支持require_once。 HTML也沒有。你必須確保它是@adaam所說的 - 它也是C頭文件中使用的技術。 – 2014-10-08 22:47:42

回答

0

嗯,你可以使用客戶端庫要做到這一點,如RequireJS或者您可以實現服務器端解決方案。我不太瞭解php,但是我的想法是擁有一個客戶端資源管理器對象,它位於沙盒範圍內(每個客戶端http請求一個)。該對象將實現一個方法,如loadResource,這將確保資源只被加載一次。

0

沒有'通用'的方式來只加載一次JavaScript庫。當一個JavaScript被加載時,它被執行並直接注入到全局域中,並且不會有'通用'跟蹤,你可以追蹤它。這是遠程JavaScript的責任,以確保它本身不能被加載多次。然而,有一些聰明的技巧可以在這裏完成。不是直接使用腳本標記加載JavaScript,而是使用init()函數「注入」依賴關係,並且您有機會驗證腳本是否已加載。例如,如果您使用jQuery,請執行以下操作:

var jsCache = {}; 
function init() { 
    if (jsCache[myJavascript]) { 
     return; 
    } 
    $.getScript("my_javascript.js").done(function() { 
     jsCache[myJavascript] = true; 
    } 
} 
init(); 

不完美,但應該達到目的。如果可能,請使用requiejs(http://requirejs.org/docs/whyamd.html),但是,您必須將腳本模塊化爲AMD模塊。