我使用 RequireJS,并且我有以下 r.js 的构建配置文件。我的主文件是 app.js,它导入 jquery、ember、handlebars 和 underscore。我有另一个特定于我的应用程序页面的文件,名为 change_email.js。它也进口余烬。
({
modules: [{
name: 'js/app',
// jQuery is included in the page
exclude: ['jquery'],
include: ['ember', 'handlebars', 'underscore']
}, {
name: 'js/change_email',
exclude: ['jquery', 'js/app']
}],
mainConfigFile: 'requirejs_config.js'
})
我的RequireJS配置如下所示:
requirejs.config({
paths: {
'jquery': 'js/lib/jquery',
'ember': 'js/lib/ember-1.0.0-rc.6.1',
'handlebars': 'js/lib/handlebars-1.0.0-rc.4',
'underscore': 'js/lib/underscore'
},
shim: {
'underscore': {
exports: '_'
},
'ember': {
deps: ['jquery', 'handlebars'],
exports: 'Ember'
},
'handlebars': {
exports: 'Handlebars'
}
}
});
我注意到有时当我加载页面时,Ember 是从 app.js 运行的,有时它是从ember-1.0.0-rc.6.1.js
. 我认为这是一个竞争条件。在 Ember 从 运行的情况下ember-1.0.0-rc.6.1.js
,已经下载了 2 个包含 Ember 的文件,app.js
并且ember-1.0.0-rc.6.1.js
. 这似乎违反直觉,因为使用 RequireJS 的目标之一是减少下载的代码量。
我想过让 app.js 导入然后导出 ember 并让其他模块从 app.js 导入 Ember。我不太喜欢这个想法,因为它需要我将导入的内容更改为不自然的样式。
删除重复的最有效方法是什么?