1

是否可以在 require.js 中设置一些选项以允许默认方案包含带有模块名称的子目录?

我想写...

require(["underscore","jquery"],function(_,$){
    // do something here
})

我希望它在这个文件夹结构中找到 jquery 和下划线......

/
/lib/
    /jquery/
           /jquery.js
    /underscore/
           /underscore.js

目前,我必须写...

require(["/lib/underscore/underscore","/lib/jquery/jquery"],function(_,$){
    // do something here
})

或者一些疯狂的包装...

function req(arr,cb){
  require(arr.join().replace(/(\w+)/g,function(mod){ return "/lib/"+mod+"/"+mod }).split(","),cb)
}
4

2 回答 2

0

是的,这应该与requirejs.config- 函数中的说明一起使用,如下所示:

requirejs.config({
    //By default load any module IDs from js/lib
    baseUrl: 'js/lib',

    //except, if the module ID starts with "app",
    //load it from the js/app directory. paths
    //config is relative to the baseUrl, and
    //never includes a ".js" extension since
    //the paths config could be for a directory.
    paths: {
        app: '../app'
    }
});

取自 Require.js API-docs,因此在paths- 属性中,您可以指定要使用的库的所有路径

于 2013-02-21T21:22:41.637 回答
0

您可以使用路径配置选项以您想要的方式添加路径。

var libPaths = (function() {
  var libs = ["jquery", "underscore"];

  var lib, paths = {};
  for(var i=0; i < libs.length; i++) {
    lib = libs[i];
    paths[lib] = "/lib/" + lib + "/" + lib;
  }
  return paths;
})();

requirejs.config({
  paths: libPaths
});

要添加更多覆盖,只需添加到libs数组中。

于 2013-02-21T21:25:47.893 回答