Backbone.js Railsで使えるGem

ThoughtBotの『Backbone.js on Rails』の目次と見出しをななめ読み

投稿日:

By: JohnCC BY 2.0

learn.thoughtbot.com/products/1-backbone-js-on-rails

買いました

電子書籍で137ページに$49 ((((;゚Д゚))))ガクガクブルブル

まだ目次と見出しと各見出しの次の1行目をちょっと読んだだけの感想です(心象風景はトップ画像のような感じです)

前半はディレクトリ構成とか名前空間とかbackbone on railsですでに実現していることが大半なのでその背景や仕組みとかRailsサイドのちょっとした設定のことを知りたいときには便利かもしれない.

後半はEventのunbindのこととか、フォームの使い方のこと、ModelやCollectionでの絞込み・並び替え・関連のことが書いてあるようで(あくまで見出しをななめ読みした感想)5章と6章はもう少ししっかりと読んでみたい.

気になったポイント

  • unbindの問題とかSwapping RouterとかComposite ViewとかはMarionetteのところでもよくみたキーワードだし大事そう leave()とか使ったほうがいいのかも
  • 関連するモデルでの通信はしっかり読み解く必要がありそう ちょっとイメージが追いつかなかった
  • Fayeサーバーを使った同期はすでに自分で試してたけどActiveRecordのobserverを使うのはいいかも
  • 同期のテストも参考になりそう
  • アップロードのサンプルはTDDで書いてあって、いきなりCucumberのfeatureとspecから始まる(でも全部で4,5ページ)
  • jQuery ujsを使った$.ajaxじゃなくてXHRリクエストだから生でcsrf対策の書き方も参考になりそう
  • テストの章にもTDDのサンプルがある
  • あ、CoffeeScriptじゃなくてJavaScriptです

全体的に、少し内容が古いかもしれないので、実際に読んでみたら使えないことがあるかもしれないし、1項目はだいたい半ページくらいの記述、短いと2行の記述みたいなのもあります

でも、コードはたくさん書いてあって、サンプルとかが面白くて豊富なので、どちらかと言うと、ハンズオンをそのまま本にしたようなイメージなのかもしれません

少なくともRailsCastsを見た人が次のステップに

高い買い物なのでくれぐれも自己責任で購入してください

はやくBackboneの日本語本が出てほしい

 

目次は上のページで公開されています。+アルファで見出しと気になったところをメモしたやつです。

1 イントロダクション
2 学習スピードアップのために
3 Backboneの構造

4 Railsとのインテグレーション
Rails3.1以降ならassets pipeline
命名規則あれこれ
RailsとBackboneをつなぐ概観
Modelのセットアップ urlRoot:
Railsのcontrollerのセットアップ
respond_to :html, :json
respond_with @tasks = Task.all
Viewのセットアップ
backbone-on-rails
javascript_tag
Railsが生成するJSONのカスタマイズ
ActiveRecord::Base.include_root_in_json
modelName

すでにあるページをBackboneを使うように変更する
TaskViewを完成させる
RailsのURL HelperをBackboneで使う

5 Routers, Views, Templates
VIewについての説明
Initialization
Viewのelement
Viewのelementのカスタマイズ
Rendering
Events
テンプレート化の戦略
戦略を選ぶ
すでにあるRailsのViewをBackboneに使う
erb
haml
スクラッチで書く
Routers
push stateについて
サンプルRouter
routesハッシュ
Routerの初期化
Event binding
view elementの中でDOMイベントにbindする
viewで監視されるEvents
viewが発行する(publish)Events
きれいにunbinding
なぜunbindするのか
DOM イベントのunbinding
ModelとCollectionイベントのunbinding
unbindを簡単にするためにon()を使おう
Viewトリガーのイベントをunbindする
Swapping Router
Swapping RouterとBackboneの内側
Composite views
大きなviewをリファクタリングする
viewのプロパティをきれいに
Form
マークアップを始める
formから値を取得する(serialize)
Backbone formのライブラリ
サーバーのエラーを表示する
国際化
6 ModelsとCollections
filteringとsorting
内部(サーバーに繋がずに?)でコレクションを操作する
絞込み(filtering)
collectionの変更を増やす(FilterableCollectionMixinの機能を増やす)
event bindingとreferense leakについてのメモ
並び替え(sorting)
検証(validations)
Modelの関連性(relationship)
backbone-relationalプラグイン
taskアプリでの関連性
クライアントへどうやってデータを届けるかを決める
HTTP JSON APIのデザイン
APIの実装 JSONの提供
RABL
JSONのparsingとクライアントモデルの初期化
据置きしている(defferred)データをいつfetchしたらいいか
複雑に入れ子(nest)したモデル
composite model
accepts_nested_attributes_for
accepts_nested_attributes_forの例
ビジネスロジックをクライアントとサーバーを通じて移植する
クライアント間の同期
一緒にする
実装ステップ1 Faye サーバ
実装ステップ2 ActiveRecord observers
実装ステップ3 ブラウザ内での購読(subscribes)
同期のテスト
アップロード機能
ファイルをattributesと一緒に保存する
Modelの永続性と別にファイルをアップロードする
サンプル1 アップロードインターフェイス
サンプル2 Railsでアップロードを受け入れて永続化する paperclip
サンプル3 アップロードファイルの表示

7 テスト
フルスタックのインテグレーションテスト
導入
capybara
Cucumber
Driver capybara-webkit
JavaScriptでのユニットテスト(Isolation test)
何をテストするのか
便利なツール
Spy/stub/mock sinon.js
factory_girl.js Rosie
Jasmine gem
テスト駆動でタスクアプリを作る例
8 セキュリティ
初期JSONデータをエンコードする時XSS

 

-Backbone.js, Railsで使えるGem
-,

執筆者:

関連記事

RubyでWikiをはじめる〜gollum

目次1 環境2 インストール3  ハロー Gollum4 Powでつかう5 情報 環境 Ruby 2.1.0 Mac OSX Mavericks インストール 自分の環境ではこれをいれとかないとインス …

no image

Rails3.2のアプリにユーザー機能を追加する~Devise

  アプリにユーザー機能を追加するためにdeviseというgemを使った deviseを使えば高機能なユーザー管理機能を簡単につけることができる 参考 Rails3.2+Mongoidでログ …

Backbone.js0.9.10以降のクライアントサイドでのvalidate

Rails3.2でJasmineをつかってCoffeeScriptをテスト~jasminerice

    #261 Testing JavaScript with Jasmine (revised)   addyosmani.github.com/backbone-f

no image

Ruby on Rails 3.2でファイルアップロード〜CarrierWave & RMagick

    CarrierWaveはRubyでファイルのアップロードを簡便にするGemです。 RMagickはImageMagickという画像ファイルを加工するソフトのラッパーです。C …