2015-11-16 91 views
0

我是使用requirejs(2.1.19)的新手。目前我正在開發一個使用它的應用程序。 我的問題如果某個用戶在其頁面上已經有requirejs(< 2.1.19)會發生什麼情況。 這意味着要加載兩個版本的requirejs,這會導致衝突。 如何處理這個問題。以便我的應用程序覆蓋用戶使用的requirejs。僅在未加載時才加載requirejs庫

我希望如果用戶已經有requirejs。它使用該JS,否則它使用我服務的requirejs 有沒有辦法做到這一點?

回答

2

您可以檢查是否有全球RequireJS功能已經定義。例如:

if(typeof define == "undefined") { 
    // RequireJS isn't present... 
} 
// or... 
if(typeof require == "undefined") { 
    // RequireJS isn't present... 
} 

爲了有條件地加載庫,您需要一個獨立的JavaScript加載器。 One of simplest file loaders is HeadJS

if(typeof define == "undefined") { 
    head.load("yourOwnRequire.js", function() { 
     // RequireJS will be loaded asynchronously 
    }); 
} 

請注意,異步加載庫有一些影響。一旦文檔被加載,某些庫可能無法使用,您需要仔細考慮如何初始化您的Web應用程序。

在另一方面,如果你想同步加載您RequireJS,看看這個問答&一個檢查如何使用手動添加腳本標籤的JavaScript:

+0

if(typeof define ===「undefined」){...}也可以觸發,如果Dojo被加載例如,所以它可能是假陽性。小心。 –

+0

@StrandedKid我們不知道OP是否在使用Dojo ........ –

+0

@StrandedKid我已經更新了答案,以檢查'require'是否'define'不明確 –