2014-03-26 47 views
1

我不確定這是否可行,我試過paths配置中的通配符*如何告訴RequireJS查看某個模塊的子目錄?

我想加載來自子目錄libs/jquery/src的名爲jquery/*的請求模塊,但其他文件應相對於baseUrl加載。這是我試過的:

({ 
    baseUrl: ".", 
    name: "main", 
    out: "main.build.js", 
    paths: { 
     "jquery/*": "libs/jquery/src" 
    } 
}) 

這種可能嗎?

實施例:

require([ 
    "jquery/ajax.js", 
    "view/table.js" 
], function(tableView){ 

    var t = new tableView; 

    return { 
     tableView: tableView 
    }; 

}); 

將從./view/table.js加載從./libs/jquery/src/ajax.jsjquery/ajax.jsview/table.js

編輯

我也有這個paths配置嘗試:

paths: { 
    "jquery": "libs/jquery/src" 
} 

在這兩種情況下,我得到這個錯誤:Error: Error: ENOENT, no such file or directory 'Development/rjs/jquery/ajax.js'而預期路徑看,就是Development/rjs/libs/jquery/src/ajax.js

回答

0

有沒有實際的模式匹配。然而,RequireJS可以匹配路徑的開始用別的東西來代替它,所以你可以這樣做:

paths: { 
    "jquery": "libs/jquery/src" 
} 

有了這一點,那麼如果你這樣做:

require(["jquery/foo"], ...); 

RequireJS將尋求libs/jquery/src/foo.js。當然,如果你碰巧想要加載整個jQuery爲jquery,那麼這會有問題。

如果您將擴展插入依賴關係中,這將不起作用。您必須從模塊名稱中刪除.js,否則RequireJS會將該名稱視爲文字路徑,並且不會通過paths

+0

這就是我最初嘗試過的方式,但不幸的是它對我不起作用。我得到這個:'錯誤:錯誤:ENOENT,沒有這樣的文件或目錄'Development/rjs/jquery/ajax.js''在哪裏我的baseUrl是'Development/rjs' –

+0

你使用什麼版本的RequireJS?最新的是2.1.11。 – Louis

+0

r.js:2.1.11,RequireJS:2.1.11,UglifyJS2:2.4.12,UglifyJS:1.3.4 –

相關問題