2012-02-01 99 views
5

我在繞過RequireJS時遇到了麻煩。我發現這是一種很好的/必要的技術,但對我來說,實施它卻是一個真正的延伸。我非常感謝你的幫助!Backbone/RequireJS和多個模型

我想用Backbone和RequireJS開發一個相當靈活的應用程序。問題是我完全習慣於像new Person()這樣的語法,而不必指定依賴關係。有沒有一種有效的方式來使用RequireJS和很多模型?我認爲我的問題總是與回報一起工作。我考慮使用工廠方法創建具有require函數的模型,但這樣做需要require函數是同步的,這完全違背了RequireJS的用途。

只需要首先要求我的所有模型,然後將這些模型包含在實例化函數中,這似乎是不對的,或者我需要嗎?

你有任何關於如何構建和建模這樣的應用程序的建議或教程?

謝謝你幫助我!

JMax

回答

21

您可以使用我所謂的需要js模塊模式。如果你知道一組類經常一起使用,你可以做這樣的事情。

首先,你在一個單獨的文件中定義的每個類,然後你定義一個模塊來結合在一起,

Module.js 

define([ 

    './models/FirstModel', 
    './models/SecondModel', 
    './views/FirstView', 
    './views/SecondView', 
    'txt!./templates/template.tpl' 

], function(FirstModel, SecondModel, FirstView, SecondView, template) { 

    return { 
     FirstModel: FirstModel, 
     SecondModel: SecondModel, 
     FirstView: FirstView, 
     SecondView: SecondView, 
     template: template 
    } 

}); 

然後當你想使用類從這個模塊你只是做

define(['./Module'], function(Module) { 

    var AView = Module.FirstView.extend({ 

     model: Module.FirstModel, 

     render: function() { 

      this.html(_.template(Module.template)(this.model.attributes)); 

      if (something) { 

       this.$el.append(new Module.SecondView().render().el); 
      } 
     } 
    }) 

    return AView; 
}); 

我不相信使用requirejs定義的模塊,我們應該返回一個實例 - 我們應該總是返回一個構造函數或一個對象。

你應該完全接受定義和要求 - 隨着時間的推移,你會開始喜歡它 - 而不必考慮添加/跟蹤依賴關係等等,無處不在手動或(所以2005年!)擁有大部分內容一個文件:)

+0

絕對完全真棒。謝啦!我希望我能給你更多的聲望...... – 2012-02-02 02:15:52

+0

是幫助是足夠的:) – 2012-02-02 12:17:56