みなさんお待ちかね!
大変お世話になってる身としてはうれしいですねー。
おめでとうございます!
さて、いまMarionetteを使ってるプロジェクトで、割とキリのいいタイミングやったのでアップデートしようとしたのですが、そのままファイル差し替えればOKってなわけではなく・・。
ざっくり変更点と、そこのところをメモしときます。
変更点
参考: Release v2.0.0 · marionettejs/backbone.marionette
詳しいのはきっと別の方がそのうち書いてくれると思うので、自分のプロジェクトで直接関係してたとこを書き連ねておきます。
Global
- initialize:before イベントが、before:start イベントに名称変更
- initialize:after イベントが、start イベントに名称変更
Regions
- open メソッドが、attachHtml メソッドに変更
- close メソッドが、empty メソッドに変更
- show メソッドが、this を返すように(Viewと同じ)
- 同じViewをshowしても再レンダリングされなくなった(レンダリングが必要な場合、show(view, {forceShow: true}) ってする)
Views
- Layout が、LayoutViewに名称変更
- close メソッドが、destroy メソッドに変更(destroyされたViewは、再openできない)
Collection/CompositeViewは使ってないので気にしてません・・。
アップグレード手順
さて、アップグレードです。
さいしょから
いまからはじめるプロジェクトであれば、今まで通りGithubなりBowerなりで取得して使えばOK。
ドキュメントは更新されてる風なので、大概は大丈夫かと。
つづきから
既存のプロジェクトに適用する場合、ちょっとした手間が必要です。
参考: marionettejs/Marionette.Upgrade
このように、アップグレードどうすりゃいいの?リポジトリがあるのでここからやります。
詳細な手順は上記リポジトリを参照してください。
ただ一言で書くと、コードをがっつり書き換えるバッチみたいなのを叩きます。
上記リポジトリのREADMEにも書いてあるのですが、「テストはしたけど完全な置換は約束できないので、そこんとこ注意してね、なんかあったらPR投げるなり教えてください」とのこと。
おまけ:今のところ私がハマったリスト
- lib/core/amd/ にあったAMD対応版がまだない
- Region.close -> emptyの変更を知らずに close -> destroy に置換しちゃってエラーになってた
- 仕様通りやけど、一度destroyされたViewインスタンスを再利用しようとしててエラーになってた