Rails 4.0 のデフォルト Gemfile に入るらしい、pjax っぽいことをして画面遷移を高速化する gem turbolinks について軽く調べてみました。
Introducing Turbolinks: github.com/rails/turbolin…. This will ship as default-on in Rails 4.0 Gemfile. PRESS TURBO BUTTON! yfrog.com/odqcgsxj
— DHHさん (@dhh) 9月 26, 2012
実態は100行ほどの coffee script なのでざっくり読んでみるとどんな挙動をするのかわかりやすいです。
turbolinks/lib/assets/javascripts/turbolinks.js.coffee at master · rails/turbolinks · GitHub
以下簡単なメモ。
- 普通にリンククリックで画面遷移していたところをajax化する
- pjaxと違ってbodyタグ以下決めうちで差し替える
- リンクをクリックすると xhr で GET → body タグ差し替え → pushState。
- 複雑な設定がいらない。これまで動かしていたサービスにすぐ投入できるっぽい。
- bodyタグ配下だけ差し替えると言うことはJavaScript や CSS ファイルへリクエストが飛ばない&解釈しない分早い
- Rails3.1 以降であれば Asset Pipeline で全部の JavaScript や CSS をそれぞれ一つにまとめているはずなので問題ない
- サーバ側はこれまでとかわらず普通にレスポンスを返すので、サーバ側に重たい処理が早く返せるとかそういう話しじゃない
- pushState が使えないブラウザでは使えない。その場合は普通に遷移する