2013-05-15 158 views
1

我的應用程序有不同的模塊,它要求一個文件下面的方式得到加載我在2個文件夾中具有相同的結構,例如:前綴模塊使用requirejs

folder1 
    | 
    modules 
    | 
    common 

    folder2 
    | 
    modules 
    | 
    common 

有什麼辦法可以讓我可以定義一個全局變量,如currentFolder ="folder2" &,具體取決於它將加載相應模塊的變量。

我不想更改每個文件中的現有代碼。 我想在我的需求調用之前追加一些東西。

+0

你有這樣的腳本標籤嗎?

+0

是的。以類似的方式。 –

回答

0

假設文件夾1和文件夾2是的baseUrl目錄的孩子:

要使用文件夾1,把這個在你的主js文件:

require.config({paths: {"modules": "folder1/modules"}}) 

要使用文件夾2,把這個在你的主js文件:

require.config({paths: {"modules": "folder2/modules"}}) 
+0

路徑配置可用作文件的快捷方式。如果該文件需要使用相對路徑的其他文件,那麼它不起作用,導致在再次出現相對路徑的情況下,baseURL不會附加解析後的url。因此無法使用路徑配置來實現上述任務。 –

0

不推薦,但這是因爲我看到這可以通過將代理放在require調用前面來實現。
你可以定義你自己的require函數,從裏面調用實際的require。你可以把你的更改到url來檢索你自己的需求。

示例代碼可以給出如下。

var oldrequire = require; 
require = function(){ 
    var prefix = global.mode; 
    if(typeof arguments[0]==='string'){ 
     oldrequire(prefix+arguments[0]); 
     return; 
    } 
    var arr = arguments[0]; 
    if(arr instanceof Array){ 
     for(var index in arr){ 
      arr[index] = prefix+arr[index]; 
     } 
     oldrequire(arguments); 
    } 
} 

您可能還需要重寫define函數,因爲它使用相對require來獲取文件。

注意:再說一遍。這是不推薦的,因爲您不確定特定的需求調用可能會如何表現。