2012-12-29 84 views
0

已經花了整整一天的時間,我認爲這是一個呼喊的時間。我正在使用require.js將模塊包含在我的主幹應用程序中。這是我有:加載動態的Require.js模塊

我requirejs配置:

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_loader:

define ["jquery.min"],() -> 
jQuery = $ 
jQuery.noConflict(true) 

我jqueryui_loader:

define ['jquery.ui.all'],() -> 

我的電子郵件地址模塊:

define ['marionette', 'jqueryui', 'tags'], (Marionette, ui, tags) -> 

我部首頁模塊

define ['marionette', 'jqueryui', 'dept_tags'], (Marionette, ui, tags) -> 

一切正常,編制,但也許我不明白它還是我失去了一些東西,電子郵件模塊動態加載上的click事件,它有jQueryUI的包括在裏面,我相信這只是一個r.js優化文件。

現在我做了另一個點擊事件後,電子郵件模塊加載,我看到部門模塊也有jquerui在它,都進來了90KB,我期望的是部門模塊使用jqueryui多數民衆贊成已加載電子郵件模塊。

感謝您的幫助!

回答

0

我認爲你不應該使用這樣的jquery loader。你應該使用shim屬性來初始化noConflict。 I've answered something similar a few days ago

在你的情況下,它會是這樣的(但在隨後的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'] 
     } 
    } 
});