减少RequireJS模块之间的代码重复
Reduce duplication of code among RequireJS modules
我使用RequireJS,我有以下r.js的构建配置文件。我的主文件是app.js,它导入jquery、ember、handlers和下划线。我有另一个特定于我的应用程序页面的文件change_email.js。它也导入ember。
({
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。我真的不喜欢这个想法,因为它要求我将导入更改为非自然的样式。
消除重复的最有效方法是什么?
错误在于没有定义生产代码应该从哪里加载模块。通过在我的生产配置中定义以下内容,我使一切都正常工作。
requirejs.config({
baseUrl: '/static',
paths: {
'jquery': 'js/app',
'ember': 'js/app',
'handlebars': 'js/app',
'underscore': 'js/app',
'underscore.string': 'js/app'
}
});
相关文章:
- 如何在城市和州代码之间用逗号将城市和州从短划线格式化为空格.(javascript)
- 在D3插件sankey.js和html代码之间定义源代码
- 插件和现有jquery代码之间的冲突
- JavaScript-What'匿名函数和普通代码之间的区别是什么
- 两个代码之间的区别是什么(javascript的循环)
- 以下 2 段代码之间是否有实际区别
- JavaScript和GWT代码之间的通信
- Android应用程序和Javascript代码之间的舍入差异
- 以下两个javascript代码之间有什么区别
- 有没有什么技巧可以在格式化/缩小的CSS、JS代码之间自动往返
- 什么'解析Javascript和解析云代码之间的区别
- 元素的总和,代码之间的差异
- 有人能解释一下这两个代码之间的区别吗?为什么第二个有效,而第一个无效;t
- 如何添加jquery字数统计和限制在php代码之间
- 如何在html5/js代码和Windows Phone 8本地代码之间进行交互
- 我的JS代码之间的区别是什么?
- 我如何在剃刀视图中编写服务器端代码之间的JavaScript
- 内联Javascript代码和纯Javascript代码之间的最佳性能是什么?
- Javascript和服务器端代码之间存在重复的常量
- 如何在此 jQuery 代码之间添加和删除类