2

RequireJS と BackboneJS を使用して Web アプリを構築しているときに、問題の "ベスト プラクティス" ソリューションを見つけようとしています。

私のアプリは、(起動時またはその後すぐに)サービスの大部分のデータをスクラブし、そのデータを解析する必要があります。

明らかに、モデルでデータを取得して (複数のサブモデルに) 解析する必要がありますが、少しつまずいているのは、モデルを永続的に維持する方法です。BackboneJS を使用すると、ビューを使用してオンザフライでモデルをインスタンス化する必要があるように感じますが、それは私のシナリオでは機能しません。

さらに、RequireJS はすべてをグローバル名前空間外のモジュールに分離するため、永続モデルをビューで使用できるようにする方法に苦労しています。シングルトン パターンを使用する必要がありますか? もしそうなら、RequireJS を使用した循環依存の問題を回避する方法について何か提案はありますか?

4

2 に答える 2

1

ビューの外で長寿命モデルを作成し、それらを渡すことができます。

var view = new MyView({model: theModelInstance});

ビューを削除するときは、ビューがガベージコレクションされるのを妨げる可能性のあるすべてのイベントのフックを解除することを忘れないでください。

于 2012-04-16T15:58:10.550 に答える
1

これに対する私の解決策は、require.jsを使用して他のすべてのモジュールに渡す単純なオブジェクトを作成するモジュールを作成することです。

たとえば、yourobject.jsを作成し、それをすべてのモジュールに含めます。yourobject.js内で、オブジェクトを作成して返すだけです。

# coffeescript
define [], () ->
  YourObj = 
    # you can put all kinds of things in here or just leave it empty
    init: ->
      # i usually put my app init/backbone bootstrapping code 
      # here then call it in the app module

  # and return it
  YourObj

次に、このモジュールを他のモジュールに含めるだけで、YourObjを(ある意味で)グローバルオブジェクトであるかのように使用できます。インスタンス化されたバックボーンビューを保存できます。バックボーンルーターは、将来の操作に備えて...好きなように保存できます。

RequireJSは、すべてをグローバル名前空間外のモジュールに分離します

RequireJSは、コード全体に優れた傘を提供するものと考えてください。RequireJSによるグローバルな名前空間の汚染はありませんが、グローバルであるかのようにそのようなオブジェクトを渡すことを妨げることはありません。これで少し問題が解決することを願っています!

于 2012-04-28T13:11:17.613 に答える