0
我使用RequireJS,并为r.js创建了以下构建配置文件。我的主要文件是app.js,它导入了jquery,ember,handlebars和下划线。我有另一个文件特定于我的应用程序的一个名为change_email.js的页面。它也输入烬。减少RequireJS模块之间的代码重复
({
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'
}
}
});
我注意到,有时当我加载页面,灰烬从app.js运行,有时它是从ember-1.0.0-rc.6.1.js
运行。我认为这是一种竞争条件。在Ember从ember-1.0.0-rc.6.1.js
运行的情况下,已经下载了包含Ember的2个文件app.js
和ember-1.0.0-rc.6.1.js
。这似乎与直觉相反,因为使用RequireJS的目标之一是减少下载的代码量。
我想过要制作app.js导入,然后导出余烬,并让其他模块从app.js.中导入Ember。我不太喜欢这个想法,因为它需要我将我的进口改为不自然的风格。
什么是最有效的方法来删除重复?
虽然你的问题是没有这一项的副本,我[这里的答案](http://stackoverflow.com/questions/18500478/dynamically-included-javascript-and-dependencies/18500559#18500559)可能会给你一个可能的解决方法。 –
app.js中目前有哪些模块?你能打开构建的文件并列出它们吗? – Chris