2013-06-13 29 views
0

我在/utils/routerExtend.js本文件:什麼包含在Require.js define()和Backbone中?

(function() { 
    _.extend(Backbone.Router.prototype, Backbone.Events, { 
    before: function() {}, 
    after: function() {}, 
    route: function(route, name, callback) { 
     Backbone.history || (Backbone.history = new Backbone.History); 
     if (!_.isRegExp(route)) route = this._routeToRegExp(route); 
     if (!callback) callback = this[name]; 
     Backbone.history.route(route, _.bind(function(fragment) { 
     var that = this; 
     var args = this._extractParameters(route, fragment); 
     if (_(this.before).isFunction()) { 
      this.before.apply(this, args); 
     } 
     if (callback) callback.apply(that, args); 
     if (_(this.after).isFunction()) { 
      this.after.apply(this, args); 
     } 
     }, this)); 
    } 
    }); 
}).call(this); 

現在,我是新來的要求(事實上,從來沒有使用過,只是讓我的頭圍繞它的使用/優勢,爲我的應用程序) ,我必須每次我這樣做的時間與骨幹沿着這包括:

define(["backbone", "/utils/routerExtend.js"], function(Backbone, ???) {

就是上面是否正確?

而且,我該如何讓我的routerExtend.js成爲一個實際的模塊?努力開始在這個不幸的...

回答

0

你可以在你的配置設置代表。因此,像這樣:

var require = { 
    paths: { 
    jquery: 'lib/jquery', 
    underscore: 'lib/underscore', 
    backbone: 'lib/backbone' 
    }, 
    shim: { 
    backbone: { 
     deps: ['jquery', 'underscore'] 
     exports: 'Backbone', 
     init: function($, _){ 
     var Backbone = this.Backbone; 
     _.extend(Backbone.Router.prototype, Backbone.Events, { 
      // your setup code here 
     }) 
     return Backbone; 
     } 
    } 
    } 
} 

更多細節在這裏:http://requirejs.org/docs/api.html#config-shim

另一種方式將創建mybackbone.js你自己的 '骨幹模式':

define(["backbone"], function(Backbone) { 
    _.extend(Backbone.Router.prototype, Backbone.Events, { 
    // your setup code here 
    }); 
    return Backbone 
}); 

然後在項目中使用mybackbone而不是原來的。

+0

很好!謝謝 – benhowdle89

+0

這會工作嗎?有人指出routerExtend取決於BB,而不是其他方式? – benhowdle89

+0

對不起,我的最後一個答案不適用於你的情況。我改變我的答案,而不是使用「shim init」。 – xzhang

1

是的,你必須在每個使用index.html的文件中包含它。

define(["backbone", "/utils/routerExtend.js"], function(Backbone, ???) { 

???將你也許使用任何VAR在文件/utils/routerExtend.js 像這樣:

define(["backbone", "/utils/routerExtend.js"], function(Backbone, RouterExtend) { 

上面有哪些線路需要做的是,將在可變RouterExtend加載/utils/routerExtend.js腳本然後你可以在任何你想使用/utils/routerExtend.js的地方使用RouterExtend var。

相關問題