2012-02-01 18 views
5

主にRequireJSの周りに心配しています。私はそれが良い/必要な技術だと思っていますが、それを実装することは、私のためには本当のストレッチです。私はあなたの助けに大変感謝しています!バックボーン/ RequireJSと複数のモデル

私はバックボーンと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で定義されたモジュールを使用するとは考えていません。インスタンスを返すべきです。常にコンストラクタやオブジェクトを返すべきです。

あなたはそれを愛するようになるはずの定義と必要な時間を手に入れて、どこにでも依存関係を追加/追跡することを考えなくても大丈夫です。 1ファイル:)

+0

まったく素晴らしいです。ありがとう!私はあなたにもっと評判を与えることができたらいいと思っています... –

+0

助けがあれば十分です:) –

関連する問題