2012-04-18 24 views
5

私は今、私が実際にコードを整理して、スケーラビリティと管理性を向上させたいと思っています。私はフレームワークを使用せずにjavascriptでMVCアーキテクチャのより良い理解を得たいです。MVC in Vanilla JavaScript

だから、これは私が(私が間違っている場合は、私を修正してくださいしてくださいしてください)これまでに理解するものです:

モデル: サイト/ Webアプリケーションのコンテンツ(写真、コピー、ダウンロードの組織化構造コンテンツなど...) も、コンテンツの操作に必要なロジックを持っています。 javascriptでは、モデルはJSONオブジェクトでも、データベースを取得/更新するphpファイルへの呼び出しでもよく、モデルのロジックは解析、正規表現、および整理して渡すことができる関数にすることができますビューにオフですか?

:ユーザーインターフェイスとモデルのデータ/コンテンツの視覚的表現。その唯一の仕事はコンテンツを表示し、該当する場合はユーザーの入力を受け入れることですか?

コントローラ:コントローラーのみのジョブはモデルとビューの間のメディエーターとして機能するのですか?例えば、ビューにデータが必要な場合は、コントローラーにモデルにアクセスしてデータを取得し、ビューに戻します。ユーザからの入力があれば、ビューはそれをコントローラに送信します。コントローラはモデルをモデルに送信し、モデルが更新されたことをコントローラに通知します。

MVCは、MVCがJavaScript(Java、PHP、Java、Actionscriptなどのリースではないリース)で自然なアクセンチュアではないという事実と組み合わせて、私の混乱のポイントです。 。)

+0

JavascriptからMVC asidesを見て、それについてのいくつかの理論を読んでみてください。次に、これらのメソッドを任意の言語で適用できます。 – TJHeuvel

+0

私はまだ、MVCの純粋なMVCの実装を、javascriptの最初から見たことがありません。 TodoMVCでのバニラJの実装は、異なるレイヤーの分離がありますが、確かに真のMVCではありません。受け入れられた答えに私のコメントを参照してください。ヘッドファーストデザインパターンのイラストが役立つかもしれません:http://codereview.stackexchange.com/questions/42353/is-the-vanilla-implementation-of-todomvc-really-an-mvc-app – oligofren

+0

真のmvcは、最初からボイラープレートコードの量です。バニラTodoMVCアプリは900 +ラインのJSですが、本当のMVCには欠かせない要素です。 "The Sheep"の答えは、これが必ずしも悪いことではない理由を説明しています; – oligofren

答えて

3

コードを見ることは、いつも私が学ぶ最も良い方法だったので、私はこれらを共有すると考えました。

TODO mvc comparing many different JS MV* Frameworks

上記のリンクは、すべてのJSのMV *フレームワークを比較します。このデモでは、特にあなたがMVCとは何かを理解し、JSでそれを実装する方法と同じくらい混乱している、それの音から、

Vanilla JS Todo mv* implementation

source

をあなたに興味なければならない、ただ見て多くの異なるフレームワーク(ember.jsbackbone.jsなど)とそれらのソースを取得することができます。 TODOリストは素晴らしい出発点です。

+1

バニラjs実装はMVC実装ではありません。 Model-View - 他の実装(MVB、MVP、MVVMなど)のほとんどと同様に、どのような実装でも実装できます。具体的には、バニラjsの実装は、MVCが課す単純な制限を実施しないため、MVCではありません。コントロールにはビューとモデルの参照+ビューにモデルとコントローラの参照があります。また、Modelにオブザーバの実装がないため、ビューはそれに基づいて更新できます。 – oligofren

+0

@oligofrenは2歳の質問の下投票の説明に感謝し、リンクを更新するよう警告しました。 – Loktar

+0

今すぐコーシャーに見えます:) – oligofren

7

最初の真実は、ViewとControllerが - ほとんどの場合 - 非常に近いことです。ときどき同じこともあります。そして、それは必然的に悪いことではありません。テーブルがある場合は、行を選択し、選択した行のデータを変更するボタンをクリックします。ボタンは明らかにビューの一部(データが表示されます)コントローラ(データを変更します)になります。 )

しかし、個人的に、私はあなたをお勧めする、より良い例が

二真実は人がいるとして、あなたがMVCにほぼ同じ多くの意見を見つけることである...私は確信している、このためにあります。いくつかのデザインパターンを忠実に従わないようにする。MVCはコードを設計するのに適していますが、最終的にコードは高速で安定していて、メンテナンス可能でなければなりません。そして、あなた(そしてあなたのチーム)はコードに慣れていなければなりません。 MVCパターンに従ったコードで終わったら、うまくいく。そうでなければ、また大丈夫です。少なくともそれは私の考えです。

関連する問題