ソフトウェア/rails/Turbolinks5 の変更点
更新- 追加された行はこの色です。
- 削除された行はこの色です。
- ソフトウェア/rails/Turbolinks5 へ行く。
- ソフトウェア/rails/Turbolinks5 の差分を削除
[[公開メモ]] * Turbolinks が新しくなって、使いやすくなった・・・らしい? [#if2d008f] Rails5 と合わせて Turbolinks が大幅に書き直されて、 ちまたでは使いやすくなったと評判みたいなのですが、 すでに古い Turbolinks を使っていた人向けの Migration Guide とか見つからずに困っています・・・ * バージョン判別法が分からない [#h334c9dd] そもそも - バージョン判定法が API に含まれていなかったり - 互換性目的の Turbolinks.EVENTS が廃止されたり 古い Turbolinks はもはや無かったことにされているのはかなりひどい話 * バージョン判定方法 [#p8e3bdc0] バージョン一覧:~ https://gemnasium.com/gems/turbolinks/versions 新しい Turbolinks には ChangeLog がない~ https://github.com/turbolinks/turbolinks/releases ~ これ見る限りものすごく若いライブラリなのに、いきなり Rails5 に標準採用とか思い切ったことするなあ 旧バージョン turbolinks-classic の ChangeLog:~ https://github.com/turbolinks/turbolinks-classic/blob/master/CHANGELOG.md https://gist.github.com/saboyutaka/8727377 によれば、~ > TurbolinksはRails4.0からデフォルトで導入されたgem そのときのバージョンは 2.2.0 ? LANG:javascript if(typeof Turbolinks !== 'undefined' && Turbolinks.supported) { // Turbolinks が有効になっている if(Turbolinks.EVENTS) { // for Turbolinks >= 2.4 } else if(Turbolinks.pagesCached){ // for Turbolinks < 2.4 } else { // for Turbolinks >= 5.0 } } で合っているのかしら??? * 具体的には riot_rails を使いたかったのだけれど、 [#r1f2b861] LANG:javascript var handleTurbolinksPageLoad = function () { var unmountEvent; if (Turbolinks.EVENTS) { // Turbolinks >= 2.4.0 $(document).on('page:change', function(){ riotRails.mountAll(); }); $(document).on(Turbolinks.EVENTS.BEFORE_UNLOAD, function(){ riotRails.unmountAll(); }); } else if (Turbolinks.pagesCached) { // Turbolinks < 2.4.0 Turbolinks.pagesCached(0); $(document).on('page:change', function(){ riotRails.mountAll(); }); $(document).on('page:receive', function(){ riotRails.unmountAll(); }); if (window.ReactRailsUJS.RAILS_ENV_DEVELOPMENT) { console.warn('The Turbolinks cache has been disabled (Turbolinks >= 2.4.0 is recommended).'); } } else { // Turbolinks >= 5 document.addEventListener("turbolinks:load", function(){ riotRails.unmountAll(); riotRails.mountAll(); }); } } これでそこそこまともに動きそう? Turbolinks 5 では BEFORE_UNLOAD にあたるイベントはなさそうなのだけれど、 load の際に unmountAll() → mountAll() してしまえば、どんな場合にも動くんじゃないのかな? しばらくこれでやってみることにします。 * コメント・質問 [#occ345c2] #article_kcaptcha
Counter: 2928 (from 2010/06/03),
today: 1,
yesterday: 3