如何告诉RequireJS查看某些模块的子目录?

时间:2014-03-26 22:47:24

标签: javascript jquery requirejs rjs

我不确定这是否可行,我尝试使用*配置中的通配符paths

我想从子目录jquery/*加载名为libs/jquery/src的请求模块,但是应该加载与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
    };

});

将从jquery/ajax.js ./libs/jquery/src/ajax.jsview/table.js加载./view/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

1 个答案:

答案 0 :(得分:0)

没有实际的模式匹配。但是,RequireJS可以匹配路径的开头以将其替换为其他内容,因此您可以这样做:

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

有了这个,那么如果你这样做:

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

RequireJS将寻求libs/jquery/src/foo.js。当然,如果您想要将整个jQuery加载为jquery,那么这将是有问题的。

如果您在依赖项中添加扩展程序,这将无法工作。您必须从模块名称中删除.js,否则RequireJS会将该名称视为文字路径,并且不会通过paths