2013-03-07 86 views
0

Backbone在indexview模塊中沒有被調用。requirejs + backbonejs + optimizer = backbone undefined

使用requirejs 2.1.5/2.1.4和0.9.10 backbonejs

運行r.js

... 
// this is causing the backbone to return 
// null/undefined in the next define call below 
define("backbone", function(){}); 

define('views/index/IndexView', [ 
    'underscore', 
    'backbone', 
    'text!templates/index/indexTemplate.html' 
], function(_, Backbone, indexTemplate){ 

    console.log(Backbone); // returns undefined 
    var IndexView = Backbone.View.extend({ 
... 

但如果我拿出首先定義調用註冊骨幹作爲後

main.js一個模塊,一切 工作正常。但backbone-min.js分別加載。但現在這是運行腳本的唯一方式 。我絕對錯過了一些東西。

main.js

require.config({ 
    paths: { 
     underscore : 'libs/underscore/underscore-min', 
     backbone : 'libs/backbone/backbone-min' 
     templates : '../templates' 
    }, 
    shim: {   
     'backbone': { 
      deps: ['jquery','underscore'], 
      exports: 'Backbone' 
     } 
    } 
}); 

require(['app'], function(App){ 
    App.initialize(); 
}); 

build.js

({ 
    appDir: "../", 
    baseUrl: "js", 
    dir: "../../build", 
    optimize: "none", 
    paths: { 
     "jquery": "libs/requirejs/require-jquery", 
     "underscore" : 'libs/underscore/underscore-min', 
     "backbone": 'libs/backbone/backbone-min', 
     "templates": '../templates', 
    }, 
    modules: [ 
     { 
      name: "main", 
      exclude: ["jquery"] 
     } 
    ]  
}) 

我仍然得到我的腳溼骨幹和requirejs。 任何反饋非常感謝。

+0

它必須是除了你的配置的。在我的構建中,require塊如下所示: define(「backbone」,[「jquery」,「undercore」],(function(global){return | global.Backbone; }; }(this))); 請注意,我在我的shim.js中也有下劃線 – mbseid 2013-03-07 19:47:44

+0

您可以像下面這樣將'mainConfigFile'添加到您的build.js文件中:'mainConfigFile:'app/main.js''然後重建? – Mirodil 2014-02-10 14:38:12

回答

0

首先,你不需要define('backbone',...)。無論如何,這個部分是什麼?您不需要將Backbone定義爲模塊。 Requirejs正在完成讓Backbone可供您在整個框架中使用的工作。正如你在代碼中看到的那樣,通過調用Backbone.View.extend(),Backbone已經存在。如果你想檢查它,不要使用console.log,而是使用console.dir。在鉻檢查器中,它很好地格式化輸出。其次,爲你的墊片中的主幹層數組添加下劃線。

+0

define('backbone',...)由優化器腳本自動生成。這也是我在requirejs站點的require-jquery教程中注意到的。 – pneftali 2013-03-08 01:19:23

+0

另外,下劃線已經註冊爲我的墊片中的依賴項。 – pneftali 2013-03-08 01:32:37

0

我只是有這個問題,你需要從main.js添加「墊片」你build.js文件,將工作就像一個魅力;)

相關問題