2014/06/11

javaScript MVC framework

こちらの記事を拝見しました。
メモです。
URL 忘れた。。


・MVCの動機
==>プログラムを楽にするじゃない?面白くないことも非経済であるから。。
「ModelはViewに依存したくない」そうだよ。
分けるだけなく、View ⇒ Model
Controllerは実現したいことに対する手段、Modelが変更されたことをもってViewに働けという合図を送るだけ。

・手段は2つ
A: Modelへの更新が終わったタイミングで、ControllerがViewに指令を出す==>Angular.js
ーーーーー
var model = new Model();
var view = new View(model);
model.update(e);
view.render()
ーーーーー

B: ViewがModelの変更を受け取るためのObserverになる==>Backbone.js
ーーーーー
var model = new Model();
var view = new View(model);// 内部でModelに対してリスナーを仕掛ける

model.update(e);




フレームワークが自動で行う部分(破線部分)を全て取っ払うと、実際に書く処理は U ⇒ M だけになっている。



Angular.jsが色々お世話してくれるのに対して、Backbone.jsは必要最小限の機能しか提供しない。

DOMとそれ以外の依存関係という観点で見ると、Angular.jsが優れている。個人的にはセレクタの記述から解放されることと、オブジェクトをメソッドに直接渡せる(=属性の埋め込み不要)ことの喜びが大きい。

ただし(この記事のメインの趣旨ではないが)Modelの変更をViewに反映する仕組みとしてはやはりObserverが強く、Backbone.jsを採用する強い動機になっている。