2013-04-02 65 views
2

在我require.config創建速記的一對夫婦的,我經常使用的路徑:如何在優化文件之外的requirejs中實例化優化的模塊?

require.config({ 
    paths: { 
     text: 'components/requirejs-text/text', 
     url: 'config/url', 
     List: 'modules/List/main' 
     ... 

然後單獨的頁面(在單獨的腳本文件),我實例化一個模塊是這樣的:

require(['List'], function(List){ new List; }); 

我的計劃是優化所有文件爲一個文件,需要和實例化一個模塊,因爲在我的例子中,但由於require.config的路徑不再真正相關了(因爲我現在只有main.build.js )如何實例化我的模塊

UPDATE:讓我改一下:

我試圖實例化一個模塊外的優化構建腳本,我該怎麼做呢?

+1

將路徑視爲模塊名稱,並在合併文件時保留這些模塊名稱。當其他代碼需要它們時,你的模塊被實例化。 –

回答

1

無論你想包含List模塊,只要創建一個指向優化文件的新路徑配置即可。

require.config({ 
    paths: { 
     'List': 'js/myApp' 
    } 
}); 
require(['List'], function(List) { 
    ... 
}); 
+0

只要define('List',...)存在於該文件中,就應該加載js/myApp.js並返回List模塊。 – Kevin

+0

哦。謝謝,這實際上是我正在尋找的答案! – nimrod

0

我認爲,我們有一個文件名爲appInit.js,它做實例我們的應用程序,所以以後其他所有模塊應該實例化的要求,同時也是它不是好的做法,從每module.js實例化模塊,

考慮應用程序和其他所有實例的單個實例應與該應用程序組件,服務等,

每個開發人員都有自己的編碼風格,選擇你是什麼舒服..

如果你是擔心模塊的路徑,建設後不要擔心路徑s只是模塊的名稱,它應該工作,但動態加載或創建的模塊將不再工作。

+0

但我如何引用優化的main.build.js之外的特定模塊? – nimrod

+0

我不明白?但記住 我們不需要更改我們的構建代碼,它會自動爲您完成。 require('mod',function(Mod){ // do }); –

+0

即使這是在單獨的腳本標記中的優化文件之外? – nimrod

1

將您的配置移動到位於require.js庫之後的單獨位置(或者內聯在頭部,或者在JS文件中)。現在,您可以在將來加載任何模塊,並且無論首先加載哪個模塊,它們都將能夠讀取配置。

+0

問題是我不想引發已經加載到main-built.js中的模塊的請求 – nimrod

+0

如果您嘗試從另一個單獨的模塊請求構建文件中的模塊,那麼您可能會遇到問題與競賽條件。常見的情況是在構建文件中使用jQuery,然後再單獨使用它。如果主文件加載時間較長,則會出現故障。在這種情況下,我創建了我的公共庫(jQuery,插件等)的內置文件。在大多數情況下,加載3-4個構建的文件異步仍然是性能優勢。 –