2016-03-17 82 views
1

在RequireJS中,可以爲給定模塊明確配置路徑。例如,您可以指定爲模塊foo模塊bar應改用加載(文件bar.js應該被加載):RequireJS路徑配置說「所有模塊都在此文件中」

require.config({ 
    paths: { 
     "foo": "bar" 
    } 
}); 

我怎麼可以這樣做,但所有模塊?


我試着用一個星號,但它只會創造模塊*字面上的映射:

require.config({ 
    paths: { 
     "*": "bar" 
    } 
}); 
+0

我不知道答案,但有興趣的目的是讓你嘗試這個......我可以知道它是什麼嗎? –

+0

@LinhPham TypeScript編譯器能夠將多個外部模塊編譯爲放入單個輸出文件的命名AMD模塊。但是,爲了有效地使用這些模塊,必須對RequireJS進行配置,以便它知道在哪裏找到它們。 –

+0

很有意思。我們是否像'jquery' +'underscore' =>'define('jquery',[fucntion(){...}]); define('underscore',[fucntion(){...}]);'到單個文件中? ----如果是這樣,也許可以應用解決方法。 –

回答

1

根據你的問題和評論

打字稿編譯器能夠將多個外部模塊編譯爲放入單個輸出文件的命名的AMD模塊。但是,爲了有效地使用這些模塊,必須對RequireJS進行配置,以便它知道在哪裏找到它們。

有一種解決方法可以應用。首先,除了所有模塊的路徑外,我們不要在config中定義任何模塊路徑。

require.config({ 
    paths: { 
     "all": "path/to/all/modules" 
    }, 

    deps: { "all" } // This to tell requireJS to load 'all' at initial state. 
}); 

,然後裝入config/main文件

<script data-main="scripts/main" src="scripts/require.js"></script> 

從這個requireJS將簡單地讀取所有define()modules.js。它將註冊您在js文件中獲得的所有模塊名稱。例如,如果您在module.js中獲得define('myModule', [function(){...}]);。您可以直接調用以在任何地方加載它,而無需爲其定義路徑。

例如在你的代碼中的一些地方。

requirejs(['myModule', function(myModule){ 
    myModule.doSemething(); 
}); 

(注:是的,這個答案是不是想解決問題的原點,而只是一門心思解決最初的問題,如果有人認爲此答案沒用隨意下表決)

+1

我會在星期一看看,但這似乎是我的問題的解決方案。 –

相關問題