##Backbone.js
- Angular.js、Knockout.jsと比べて
- バインディングの概念がない
- モデルとビューのインタラクションは手動で記述
- モデルやコレクションはレイヤスーパータイプから継承して定義
- ビューのイベントハンドリング
events:{
"click #add-button": "onAdd",
}
- モデルのイベントハンドリング
this.listenTo(foods, "add", this.addOne);
ビューのイベントが発生した場合にも必ずモデルに更新をかけ、モデルの更新をビューが監視し、モデル経由でビューを更新する。つまりビューを正としたOne-Way Binding的な考え方。
- モデル、コレクションの定義
var Food = Backbone.Model.extend({
defaults: {
name: "",
price: 0,
date: ""
}
});
var FoodList = Backbone.Collection.extend({
model: Food,
localStorage: new Backbone.LocalStorage("foods-backbone")
});
var foods = new FoodList;
- 触ってみた所感(Angular.js、Knockout.jsと比べて)
- ソース記述量が多い
- 「自動で何かやってくれる」部分は少ないので制御はしやすい
- 静的言語に近いコードになるのでJava、C#などから入る人には入りやすい
- 魔術的要素が少ないため、大規模プロジェクトには向いている