2012-05-24 6 views
17

backbone.jsはJavascript用のMVCフレームワークとして使用されています。しかしそれは? 、 コンバージョン:Backbone.jsは本当にMVCですか?

ここhttp://documentcloud.github.com/backbone/

モデルから、モデルの説明では、インタラクティブなデータだけでなく、それを取り囲むロジックの大部分を含む、任意のJavaScriptアプリケーションの心臓部であります検証、計算されたプロパティ、およびアクセス制御。 ドメイン特有の方法でBackbone.Modelを拡張し、Model は変更を管理するための基本的な機能を提供します。

これは、MVCのモデルを私の理解ではありません。私の理解では、このモデルはドメインをモデル化したクラスに過ぎないので、あなたの生徒、学校、教師のオブジェクトが対象になります。コントローラーは、ビジネスロジックを実行し、表示および入力を受け取るためにビューと対話します。

この理解は、私がウェブ上で見つける様々な定義と一致して、IE http://en.wikipedia.org/wiki/Model_view_controller

のModel-View-Controller(MVC)は、アプリケーションを分割し、コンピュータユーザー インタフェースのためのデザインパターンであります

モデル:アプリケーションの状態を表す ドメインオブジェクトまたはデータ構造 責任の3つの領域に。

私の質問は、backbone.jsは本当に何らかの意味でのMVCフレームワークですか、それともすべてを接着するのに役立つ一般的な方法ですか?

ところで、BACKBONE.JSのよくある質問からモデルの定義は、私は上記の(もBACKBONE.JSからhttp://documentcloud.github.com/backbone/#FAQ-mvc引用されたものと異なるように見える:

Backbone.Model - Railsのモデルマイナスと同様クラスメソッドのビジネスロジック内のデータの行をラップ

それでは意味でBACKBONE.JS本当にMVCか

(警告です。。?:

+1

多くの人がこのようなフレームワークをMV * –

+0

と呼んでいます。「変換、検証、計算されたプロパティ、およびアクセス制御」というモデルの一部として示されている* logic *のタイプに注意してください。これらはすべて、すべてのMVCアプリケーションにおけるドメインオブジェクトの問題です。ビュー間のルーティング、データベースへの更新の送信など、アプリケーション/ビジネスロジックと同じではありませんが、通常はコントローラの責任です。 – mellamokb

+1

私は本当にこれをdownvoteする必要があります(しかし、私はそれをやっていない)これは間違いなく、代理人のためのプロットのように思える!しかし、とにかく誰も言ったバックボーンMVCは彼らでしたか? **モデル、ビュー、コレクション、ルータを使用して構造を提供するライブラリとして説明します(MVCに類似しているとは言えません)。**人々は間違った前提を助けることができませんか? – Deeptechtons

答えて

11

その:BACKBONE.JS モデルビューCOLLECTIONためMVCスタンド...

18

バックボーンはMV *(MV-star)の1つです。 コントローラはありませんアプリを操作するロジックがViewにあります(代わりにM(V + C)のようなものです)。

"モデル"の統一された定義は、異なる言語で異なるフレームワーク間で異なって使用されるため、統一された定義はありません。しかし、一般的に、モデルは単にデータストレージの抽象化であり、オプションとして、検証、書式設定、状態変更フックなどのロジックが少しあります。

+0

なぜロジックにビューを入れますか? –

2

私はあなたが名前にハングアップしていると思います。すべてのMVCフレームワークが同じ命名規則に固執しているわけではありません。例えば、Djangoでは、コントローラはビ​​ューと呼ばれ、ビューはテンプレートと呼ばれます。バックボーンは、同様の命名パターンに従います。バックボーンは、特定のテンプレートライブラリを実行するのではなく、ビューの部分に非常に柔軟性があることに注意してください。

すでに述べたように、Backboneモデルに含まれるロジックは、モデルの関心事であるロジックです。モデルの集まりである標準リレーショナル・データベース(表)は、通常、列内のデータのタイプを気にします。

通常、コントローラ(バックボーンの「ビュー」)に入るロジックは、一時的なセッションデータの処理、ユーザーの状態の確認(jsではそうではないが認証されます)、ビューのバインディングモデル(バックボーンはまさにこれを行い、ユーザーのアクションとモデルの変更時に更新するためのバインディングテンプレートに基づいて、モデルの保存/作成場所と場所を管理します)。

バックボーンは実際には、実際には「PAC」フレームワーク(Presentation-Abstraction-Control)であるほとんどのサーバー側「MVC」フレームワークよりも優れています。

2

両方の種類。あなたがモデルの厳密な意味を見ているならば。つまり、モデルは単純にデータであり、それはいいえです。しかし、検証、変換などは、バックボーンがかなりモデル中心であるため、そこに配置されています。私の経験から、バックボーンモデルはバックエンドデータストアのアプリケーション表現であり、そのすべてがそのデータを操作するアクセサメソッドであるという点で、従来の意味でバックボーンモデルを扱います。

ポイントは、アクセス制御などの検証や機能を実行する機能はありますが、より古典的なMVCパターンに従うように選択できます。それはあなた次第です。これは私がバックボーンが好きなのは、アプリケーションアーキテクチャ全体を構築するMVCエンジンを提供するということです。あなたが古典的なMVCデザインパターンに従ったければ、確かにそれを行うことができます。乾杯! http://chance-an.github.com/backbone-mvc/

1

あなたは "M"(モデル) "V"(ビューを見つけようとするときを混乱ビットC」(コントローラ)である。

このようにして、私たちは常に言葉を主張することができますが、重要なのは意図です。

"M":

バックボーンモデルを "のつもり" と "規約を" 交差

コレクションモデルに関連付けられています。

"V":

デフォルトアンダー。

バックボーンコントローラです表示:JSテンプレートが標準MVC

"C" の "ビュー意向" を表しています。そのレンダリングを処理するため、と表示(多くの場合、 Djangoなど)です。 からMVCのポイントはコントローラです。 ルートは時々ちょうどいくつかは、「モデルビューコレクション」と呼んでMVC略語を満たすために、今すぐビュー

で結ばれています。しかし、それは言うべきではありません。

1

あなたはBACKBONE.JSのコントローラを求めるなら、あなたはおそらくこれを見てみたいにおける

関連する問題