私は非常に複雑なemberjsアプリケーションを作成し、それをAPIのバックエンドに結びつけています。EmberJS:モデル、ストア、コントローラ、複雑なアプリケーションのビューの良い分離?
通常、API呼び出しは特定のモデルには関係しませんが、レスポンスのさまざまなセクションでさまざまなタイプのオブジェクトを返すことがあります。 Events APIを呼び出すとイベントが返されますが、メディア資産やイベントに関与する個人も返されます。
私はこのプロジェクトを開始したばかりです。メンテナンス可能なコードベースを整備するために、懸念事項を分けるのに最適な方法について、専門家の指導を受けたいと思います。
私はこれに近づいています方法は次のとおりです。
- モデル:基本的にそれぞれの分野、およびその他の計算されたプロパティを持つレコードを処理します。ただし、モデルは要求を行う責任はありません。
- 個人、イベント、写真、ポストなど
- ストア:本質的にキャッシュです。たとえば、
eventStore
は、サーバーから受信したすべてのイベント(おそらく異なるリクエスト)を配列に格納し、id
によってインデックスされたイベントのハッシュに格納します。- individualStore、eventStore等
- コントローラ:それらは、例えば、関連するAPIコールのセットにタイeventsControllerは、イベントまたは特定のイベントを取得したり、新しいイベントなどを作成したりします。後で取得するために、異なる
stores
への応答を「ルーティング」します。彼らは店に送られた後、応答を保持しません。- eventsController、userSearchControllerなど
- ビュー:これらは特定のビューに関連付けられています。一般的に、私のアプリケーションは、さまざまな場所で複数のビューを持つことができます。
latestEventsView
をダッシュボードに追加し、別々のイベントページを作成します。 - テンプレート:それは何ですか。
はかなり頻繁に、私のテンプレートは、店舗に直接結合することが必要(例えばpeopleView
は、いくつかの順序でソートされたリスト内individualStoreにあるすべての個人を、一覧表示したいです)。
そして、時には、彼らは計算されたプロパティ
alivePeople: function() { ... }.property('[email protected]'),
様々なフィルタリングに結合し、並べ替えオプション「選択」ビューでは、ストアから別のリストを返す必要があります。あなたは私の最後の質問を見ることができますwhat is the right emberjs way to switch between various filtering options?
誰がこのフィルタリングを行うべきですか、ビュー自体または店舗?
レイヤー間でこの種のバインディングは大丈夫か、コードのにおいですか?懸念の分離が良いか、何かが欠けていますか?コントローラーはここでもっと何かをしてはいけませんか?私の見解は店舗に直接結びついていますか?
MVCの特別なケースが私のニーズに適していますか?
アップデート2012年4月17日 私の研究私は考え出した私のデザインのいくつかの問題があり、特にhttp://vimeo.com/user7276077/videosとhttp://jzajpt.github.com/2012/01/17/emberjs-app-architecture.htmlとhttp://jzajpt.github.com/2012/01/24/emberjs-app-architecture-data.html
から、上行く:リクエストを作成
- コントローラ(コントローラーではなくコントローラーではありません)
- ステートチャートが欠落しています - これらはビューコントローラーのやりとりにとって重要ですこれは、動作中のステートチャートの良い例である
UPDATE 2013年1月9日
はい、それは長い間されていますが、この質問は最近、多くの意見を得ているので、人々が感覚を得るために編集したいのです。
この質問はフレーム化されて以来、Emberの風景が大きく変わっており、新しいguidesが大幅に改善されました。 EmberJSは規則(Railsのようなもの)を思い付いており、MVCは今よりはっきりと定義されています。まだ混乱
誰もがすべてのガイドを読んで、いくつかのビデオを見る必要があります。 Seattle Ember.js Meetup
瞬間、私はEmber.js 1.0.0-pre2
に自分のアプリケーションをアップグレードしています。
私はこれらの同じタイプの質問をたくさん取り組んでいます。関連:http://stackoverflow.com/questions/10045619/controller-strategy-garbage-collection-destroy –
あなたはember-dataを使用していますか? –
また、この種の情報はEmberJSが現在欠けている場所です。私は昨日、EmberJSで作業を始めました。文字通り、EmberJSのセットアップ方法と、各タイプのオブジェクトが責任を負っていることについては全く何もないからです。見つけるには。 –