Nakajijapan

生きるのに必死です。

Backbone.jsガイドブック読書会 第2章

前回の続きです。1章ではBackboneの基礎的な知識を読んでいきましたが、次は実際に使われるオブジェクトの説明。 Backboneで利用される重要な3つのモデルModel, Coolection, Viewの説明(役割・使い方)でした。

概要と話題になったことをメモろうと思います。

Model

データを扱う方法を提供するもの。 View側で実際にデータがどう扱われているかは気にしない。 –> viewとの分離 これがjavascriptで使えちゃう。

提供するもの

  • 保持
  • 検証
  • アクセス制御
  • 保存

Validationをどうするか

サーバサイドでもクライアントサイドでも実装しなくちゃいけなくなるのは大変だよね。って話をした。 場合によりけりだろうけど。そこまでのアクセスを気にしなきゃ。検証はサーバサイドで全て任せて その結果を画面に表示。は二重管理せずに済むよね。ユーザにリアルタイムに検証結果を表示させたいとき とかはクライアント側でも利用するよねーという話をした。

ちなみに欲求不満(http://www.frustration.me)ではサーバサイドでもチェックできるようクラスを用意して それを継承して処理が動作するようになっている。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#-------------------------------------------
# Model
#-------------------------------------------
class BackboneFrustration.Model extends Backbone.Model

  initialize: (attributes, options) ->
    @on 'error',   @defaultErrorHandler
    @on 'invalid', @defaultErrorHandler

  defaultErrorHandler: (model, error) ->
    if typeof(error) == 'object'
      if error.statusText != ''
        alert 'Intal Server Error'
        console.error error

     else if typeof(error) == 'string'
       if error? or error != ''
         alert error

Collecation

複数のモデルを管理するためのオブジェクト。それ自体にデータはない。 Underscoreの配列操作に由来した関数群があるのでそれ使うと便利という話。 each(),pluck(),invoke()等のよく使いそうな便利メソッドの紹介があった。

View

BackboneにおけるViewは二つの役割を持っているという話。

  • Viewとして、「適切にDOMツリーを構築する」
  • Controllerとして、「そのDOMツリーで起ったDOMイベントを処理する」

前者でいうと

  • Model,Collectionを利用してデータの操作して、保存を行ったり、新しいViewを構築する

後者でいうと

  • DOMのイベントハンドリングはView内でちゃんとやろう

なのかなと感じた。

あと、Underscoreのテンプレートエンジンの話が出てきて、また記法覚えるの辛かったのでERBの記法に似たEJSを利用したいのですが余裕があるのでこちらに移行してみるのありだと思いました。