MVC は、モデル、ビュー、コントローラーの略です。Backbonejs.or は、これを Rails と比較して説明しています。詳細はこちらと以下をご覧ください。Rails を知らないので、この比較はまったく意味がありません。以下の抜粋では、コントローラーが強調表示されています。おそらく、厳密には MVC ではない理由です。それが何を推測しているのかわかりません。Backbone が厳密な MVC ではないということはどういう意味ですか?
Backbonejs.org サイトから抽出します (ソースはこちら)。
バックボーンは「従来の」MVC とどのように関係していますか?
Model-View-Controller パターンのさまざまな実装では、コントローラーの定義について意見が一致しない傾向があります。バックボーンでは、View クラスは一種のコントローラーと考えることができ 、UI から発生したイベントをディスパッチし、HTML テンプレートが真のビューとして機能します。これをビューと呼びます。これは、単一の DOM 要素のコンテンツを担当する UI の論理チャンクを表すためです。
バックボーンの全体的な構造を、Rails のようなサーバー側の MVC フレームワークと比較すると、次のように並べられます。
- Backbone.Model – クラス メソッドを除いた Rails モデルのようなもの。ビジネス ロジックでデータの行をラップします。
- Backbone.Collection – クライアント側のモデルのグループで、並べ替え/フィルタリング/集計ロジックを備えています。
- Backbone.Router – Rails routes.rb + Rails コントローラー アクション。URL を関数にマップします。
- Backbone.View – 論理的で再利用可能な UI です。多くの場合、常にではありませんが、モデルに関連付けられています。
- クライアント側のテンプレート– HTML のチャンクをレンダリングする Rails .html.erb ビュー。
明らかに MVC ではない理由を強調するためにイタリック体を追加しました。上でモデルとビューの用語を見つけることができますが、この用語controller
は明示的に省略されており、代わりにルーター、コレクション、およびテンプレートという用語が使用されています。ルーター/コレクション/テンプレートがコントローラーではないのはなぜですか?
このコントローラーの定義controller mediates input, converting it to commands for the model or view
(ウィキペディアはこちら) は少しあいまいです。