RequireJS多版本依赖项
我的应用程序中有几个不同的应用程序。一些较新的仅使用主干,而较旧的则使用木偶,因为木偶使用主干和下划线 现在我想更新下划线,1.6.0->1.8.3 因此,我在require.config中创建了一个遗留下划线RequireJS多版本依赖项,requirejs,dependencies,Requirejs,Dependencies,我的应用程序中有几个不同的应用程序。一些较新的仅使用主干,而较旧的则使用木偶,因为木偶使用主干和下划线 现在我想更新下划线,1.6.0->1.8.3 因此,我在require.config中创建了一个遗留下划线 paths: { 'underscore': 'vendor/underscore/underscore', 'underscore-1.6.0': 'vendor/underscore-1.6.0/underscore', 'backbone': 'vendor
paths: {
'underscore': 'vendor/underscore/underscore',
'underscore-1.6.0': 'vendor/underscore-1.6.0/underscore',
'backbone': 'vendor/backbone/backbone',
'backbone-1.1.2': 'vendor/backbone-1.1.2/backbone',
'marionette': 'vendor/marionette/lib/core/amd/backbone.marionette',
'backbone.wreqr': 'vendor/backbone.wreqr/lib/backbone.wreqr',
'backbone.babysitter': 'vendor/backbone.babysitter/lib/backbone.babysitter',
},
shim: {
'underscore-1.6.0': {
exports: 'underscore'
},
'backbone-1.1.2': {
deps: ['underscore-1.6.0'],
exports: 'backbone'
},
'backbone.babysitter': {
deps: ['backbone-1.1.2', 'underscore-1.6.0']
},
'backbone.wreqr': {
deps: ['backbone-1.1.2', 'underscore-1.6.0']
},
'marionette': {
deps: ['backbone-1.1.2']
}
},
木偶依赖于Wreqr和保姆,而保姆又依赖于下划线1.6.0(和主干线1.1.2)。我的解决方案是为它们添加DEP
我的问题是当我试图要求(木偶)时;由于wreqr和保姆都要求“下划线”和“主干”,他们得到的不是“下划线-1.6.0”和“主干-1.1.2”
我能告诉你,我该如何决定Wreqr和保姆应该使用哪个版本的下划线和主干线“主干线”和“下划线”吗
还有别的好办法吗
谢谢!
- 约翰
define.amd是否存在,并调用define
。因此,它们是合适的AMD模块。因此,您不能将垫片
用于它们。垫片
配置仅适用于并非真正AMD模块的模块(不要调用定义
)
现在,问题是需要主干的包将需要主干
,而需要下划线的包将需要下划线
。它们不按版本区分。您可以使用以下命令强制他们使用特定版本:
在应用程序中的任何地方,如果需要主干
或下划线
,则加载模块主干
或下划线
。map
建立了此规则的例外情况。当backbone.babymatter
需要backbone
时,将加载backbone-1.1.2
。当它需要下划线
时,将加载下划线-1.6.0
。地图中的其他模块也是如此
map: {
'backbone-1.1.2': {
underscore: 'underscore-1.6.0'
},
'backbone.babysitter': {
backbone: 'backbone-1.1.2',
underscore: 'underscore-1.6.0'
},
'backbone.wreqr': {
backbone: 'backbone-1.1.2',
underscore: 'underscore-1.6.0'
},
marionette: {
backbone: 'backbone-1.1.2'
}
}