2013-02-18 22 views
1

我正在研究一個需要jQuery和Raphael的小JS庫。我已經在自述文件中記錄了這個事實,但我不喜歡用戶必須手動包含三個JS庫來使用它的想法。Javascript庫應該動態添加依賴關係嗎?

如果庫沒有找到它們,它們會動態地包含依賴項,這有什麼優點和缺點?像這樣:

if (!window.jQuery) { 
    var _my_script=document.createElement('SCRIPT'); 
    _my_script.type='text/javascript'; 
    _my_script.src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js?'; 
    document.getElementsByTagName('head')[0].appendChild(_my_script); 
    console.log("Loaded jQuery");   
} else { 
    console.log("jQuery already loaded"); 
} 

// get Raphael if not found 
if (typeof(Raphael) === "undefined") { 
    var _my_script=document.createElement('SCRIPT'); 
    _my_script.type='text/javascript'; 
    _my_script.src='//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js?'; 
    document.getElementsByTagName('head')[0].appendChild(_my_script); 
    console.log("Loaded Raphael");   
} else { 
    console.log("Raphael already loaded"); 
} 

潔食?

回答

1

我個人不知道任何自動下載「外部」依賴關係的js庫,我認爲在正常情況下這不是個好主意。

表達明確需要的庫和最低版本應該就足夠了,這就是我所知道的所有js庫的工作方式。

像jQuery這樣的庫可以從CDN,本地等下載,因此強制每個人的源代碼和版本都沒有意義。

+0

謝謝!大膽的答案。 – 2013-02-18 17:00:07

1

我知道像backbone.js這樣的高度流行的庫不這樣做。

我認爲最好強制用戶這樣做,以便他們瞭解庫的工作方式。

通常,通常會有某種資源加載程序可用,它將處理添加資源。如果您單獨執行此操作,會使希望最終用戶使用的一組功能分裂。