2016-03-15 15 views
0

我定義了這樣的事:骨幹使jQuery和處處強調可用而不稱他們

require.config({ 
    shim: { 
     underscore: { 
      exports: '_' 
     }, 
     backbone: { 
      deps: [ 
       'underscore', 
       'jquery' 
      ], 
      exports: 'Backbone' 
     },  
    }, 

    paths: { 
     jquery: 'libs/external/jquery', 
     underscore:'libs/external/underscore', 
     backbone: 'libs/external/backbone', 
     text: 'libs/external/text', 
     router: '' 
    } 
}); 

然後在我的意見我有權要求jQuery和強調每次這是煩人:

define('myview',[ 
    'jquery', 
    'backbone', 
    'underscore', 
    'somemodule' 
    ], function($, backbone, underscore) { 

我知道有一種方法來定義一些圖書館gloablly,可以被稱爲accross views/model/collections ...等,而不需要他們所有的時間,但我不記得正確的實施。

任何幫助是非常讚賞

+0

請注意,這會非常的失敗使用RequireJS的目的 - 你將無法跟蹤每個模塊的依賴關係。 – kryger

回答

2

他們已經沒有可用的定義它們使用。

  1. 的jQuery已經出口本身作爲一個全局變量

    http://requirejs.org/docs/jquery.html

    的jQuery自身註冊爲全局變量 「$」 和 「jQuery」,甚至當它檢測到AMD/RequireJS。 AMD方法建議不要使用全局函數,但關閉這些jQuery全局變量的決定取決於您是否擁有依賴於它們的非AMD代碼。 jQuery有一個支持釋放全局變量的控制noConflict功能,並能在您的requirejs.config

    自動化所以,除非你去定義noConflict您可以訪問$jQuery,因爲它們連接到window對象

  2. Backbone和Underscore也可用作全局變量,因爲它們正在shim配置中導出。
    http://requirejs.org/docs/api.html#config-shimRequireJS - What is the purpose of the "exports" property in shim

所以,下面的代碼應該工作

define(['myview'], function(MyView) { 
    console.log($); // window.$ 
    console.log(Backbone); // window.Backbone 
    console.log(_); // window._ 
} 
+0

嗯謝謝你,我要去測試它。但爲什麼在todomvc的例子中,他們總是需要骨幹,jquery ......? https://github.com/tastejs/todomvc/blob/gh-pages/examples/backbone_require/js/views/app.js –

+0

可能是因爲kryger在你的問題的評論中提到的原因是跟蹤模塊依賴關係 – Sami