@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Backbone.View

Backbone.View を読んだ。ざっと眺めただけ。

http://documentcloud.github.com/backbone/docs/backbone.html

  • model: とか collection: とか tagName: とかは viewOptions というのに定義されてる
  • selectorDelegate というやつで、 jQuery とかの selector の検索範囲を特定の DOM 要素以下に限定するようなのを使っていて、 this.$ にそれで得られたオブジェクトをバインドしている
  • initialize, render は最初は空っぽな感じで、上書きして使うことが想定されている
  • make というのがあって、動的に DOM 要素を作って返す。テンプレートが必要ないような小さい要素の場合に使う、みたいなメモがあるけどどう嬉しいのかよくわからず
  • delegateEvents は Backbone.View 独特の "click .button" : 'save' みたいなイベントハンドラの宣言を受け取って、実際にイベントハンドラをバインドする。 new Backbone.View() したときに実行される。 for in でループして一個ずつやっている。 underscore.js の _.bind と jQuery などの $.bind が入り交じってて、 underscore.js のほうの理解があいまいなのでぼんやりしてしまう。 this を固定するためのものだっけ _.bind は。
  • _configure で viewOptions が Backbone.View のインスタンスのプロパティに生える。
  • _ensureElement で el: の値を初期化する。 Backbone.View のインスタンスが、実際どの DOM 要素と対応してるのかを示すプロパティ。自前で指定すればそれを使い、そうでなければ tagName とかから自動生成。これも new Backbone.View() したときに実行される。

delegateEvent で this.el に対してイベントハンドラをセットするあたりがこのクラスのキモで、あとは render() のインターフェースを揃えて、 DOM 操作がカオスにならないようにする、くらいの意義なのかな。薄い印象を受けた。眺めただけなので細かいコーディングレベルまで踏み込まずぼんやりしてるため、この行のテクニックが!みたいな感想が書けなくて薄いのはこのエントリのほうだ。