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