2014-01-16 41 views
1

我有幾個全局變量(jQuery +插件,構造函數等)的構建庫(連接,縮小和包括在require.js之前)。該庫被用作構建應用程序的基礎,並且具有假定的依賴關係。即如果我在庫之後包含我的應用程序腳本,那麼我可以自由使用jQuery和構造函數而不會有任何問題。requirejs與現有的全局變量

對於較大的應用程序,我正在考慮使用requirejs(管理應用程序中的不同模塊),同時仍使用此構建的庫。我該如何將jQuery等現有全局變量添加到require中的依賴項列表中?

<script src="pathto/lib.js" type="text/javascript"></script> 
<script src="require.js" data-main="../js/app" type="text/javascript"></script> 

requirejs.config({ 
    shim: { 
    'jquery': { 
     exports: '$' 
    } 
    }, 
    // jQuery is already loaded with lib.js, no need for any path... 
    path : { 
    jquery : 'jquery.js' 
    } 
}); 

這可能嗎?或者我應該繼續假設應用程序模塊中會存在某些全局變量,因爲lib.js是在require/app js之前包含的?

使用require來加載lib.js是不可能的,因爲它是CMS的一部分。

- 編輯 -

有關使用一個名爲模塊,並且只返回全局對象的句柄,因爲這是其中的lib內容坐鎮反正什麼?

define("lib", function() { 
    return this; 
}); 

require(["lib"], function (lib) { 
    // use existing globals found in lib via 
    lib.jQuery 
    // or simply 
    jQuery 
}); 

這讓我遵循命名依賴關係的require()約定,而不是假設。

回答

0

我做我的項目同樣的事情,我加載從CDN的jQuery,所以我的路徑配置看起來像這樣

path: { 
    'jquery': '//path/to/the/cdn' 
} 

在你的情況,我認爲你應該做你更新(定義然後返回),因爲在某些第三方庫中,他們可能會將jquery定義爲依賴關係。如果您的RequireJS配置中沒有jquery,則必須修改第三方庫的源代碼