Javascript 我可以在require.config中为子依赖项设置其他路径吗?

Javascript 我可以在require.config中为子依赖项设置其他路径吗?,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我有两个相互关联的问题 第一个是我想要一个名为backbone的文件夹,这与在路径中将backbone作为库的短名称相冲突。似乎RequireJS认为主干网/模型/用户是主干网库或其他东西的孩子。解决方案,将库主干命名为大写B 第二个问题是我使用的是ModelBinder,它的依赖项是“主干”。解决方案,更改缩小的文件 在RequireJS配置中,这两种解决方案似乎都是对的,但我不知道我做错了什么 我的公用文件夹结构类似于: public/ js/ backbone/ m

我有两个相互关联的问题

第一个是我想要一个名为backbone的文件夹,这与在路径中将backbone作为库的短名称相冲突。似乎RequireJS认为主干网/模型/用户是主干网库或其他东西的孩子。解决方案,将库主干命名为大写B

第二个问题是我使用的是ModelBinder,它的依赖项是“主干”。解决方案,更改缩小的文件

在RequireJS配置中,这两种解决方案似乎都是对的,但我不知道我做错了什么

我的公用文件夹结构类似于:

public/
  js/
    backbone/
      model/
        ...
      view/
        ...
    vendor/
      backbone.min.js
      Backbone.ModelBinder.js
      ...
  common.js
My common.js有如下内容:

require.config({
    baseUrl: "/js",
    shim: {
        'underscore': {
            exports: '_'
        },
        "Backbone" : {
            deps: ["underscore", "jquery"],
            exports: 'Backbone'
        }

    },
    paths: {
        underscore: 'vendor/underscore.min',
        jquery: 'vendor/jquery',
        model_binder: 'vendor/Backbone.ModelBinder',
        Backbone: 'vendor/backbone.min'
  }
});
因此,我的两个问题是:我如何保持Backbone.ModelBinder的原样,并告诉requirejs,当库要求主干时,它要求js/vendor/Backbone.min.js而不“污染”我的全局路径

为什么我不能在路径中同时使用主干(小写b)和目录

一个解决方案(是的,不是那么明智)是为
js/backbone
下的每个目录包含
路径
定义,即:

require.config({
    ...
    paths: {
        ...
        backbone: 'vendor/backbone.min', // NOTE lower-case 'b', as desired
        "backbone/model": "backbone/model",
        "backbone/view": "backbone/view",
        ... // and so on
    }
});
这也意味着
js/backbone
下没有直接的模块

另一种方法是在主干模块名称中保留大写字母“B”,并对主干模块使用
map
config.ModelBinder.js:

require.config({
    ...
    paths: {
        ...
        Backbone: 'vendor/backbone.min' // NOTE capital 'B' again
    },
    map: {
        "model_binder": {
            "backbone": "Backbone"
        }
});

回顾性地考虑,
映射可以应用于所有模块,以便无论何时它们请求
“主干”
(小写“b”),您都可以交付
“主干”

require.config({
...
路径:{
...
主干:“vendor/Backbone.min”//请再次注意大写字母“B”
},
地图:{

“*”:{//我使用了第一种方法,它可以工作,但似乎是个bug。如果我没有定义:'backbone/views':'backbone/views,我会得到错误/js/vendor/backbone.min/views/MyView.js 404(未找到)。
require.config({
    ...
    paths: {
        ...
        Backbone: 'vendor/backbone.min' // NOTE capital 'B' again
    },
    map: {
        "*": {    //  <------ Here difference form code above
            "backbone": "Backbone"
        }
});