Backbone.js 加载Dynamic Require.js模块
我花了一整天的时间在这上面,我想是时候大声说出来了。我正在使用require.js在我的主干应用程序中包含模块。这就是我所拥有的: 我的requirejs配置:Backbone.js 加载Dynamic Require.js模块,backbone.js,requirejs,marionette,Backbone.js,Requirejs,Marionette,我花了一整天的时间在这上面,我想是时候大声说出来了。我正在使用require.js在我的主干应用程序中包含模块。这就是我所拥有的: 我的requirejs配置: paths: jquery: "backbone/initializers/jquery_loader" jqueryui: "backbone/initializers/jqueryui_loader" modules: - name: 'application' - name: 'jquery' exclude:
paths:
jquery: "backbone/initializers/jquery_loader"
jqueryui: "backbone/initializers/jqueryui_loader"
modules:
- name: 'application'
- name: 'jquery'
exclude: ['application']
- name: 'jqueryui'
exclude: ['application', 'jquery']
- name: 'email'
exclude: ['application']
- name: 'department_home'
exclude: ['application']
priority: ['application', 'jquery', 'jqueryui']
我的jquery\u加载程序:
define ["jquery.min"], () ->
jQuery = $
jQuery.noConflict(true)
我的jqueryui_加载器:
define ['jquery.ui.all'], () ->
我的电子邮件模块:
define ['marionette', 'jqueryui', 'tags'], (Marionette, ui, tags) ->
我的部门主页模块
define ['marionette', 'jqueryui', 'dept_tags'], (Marionette, ui, tags) ->
一切都按预期运行并编译,但可能我不理解它,或者我遗漏了一些东西,电子邮件模块在单击事件中动态加载,其中包含jqueryui,我相信这只是一个r.js优化文件
现在,我在加载电子邮件模块后执行另一个单击事件,我看到department模块中也有jqueryui,两者的大小都是90KB,我希望department模块使用已经由电子邮件模块加载的jqueryui
谢谢你的帮助 我认为您不应该像这样使用jquery加载程序。您应该使用shim属性初始化noConflict 在您的情况下,可能是这样的(但在coffeescript中):
require.config({
paths: {
jquery: "path/to/jquery",
jqueryui: "path/to/jqueryui"
},
shim: {
jquery: {
exports: 'jQuery',
init: function() {
return this.jQuery.noConflict();
},
jqueryui: {
deps: ['jquery']
}
}
});