Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Marionette.js 2.4 で AppRouter を使う方法

こんにちは。masudaです。

今日はBackbone.js 上のフレームワークであるMarionette.jsについて
小ネタを書こうと思います。

f:id:acro-engineer:20150421200915p:plain


最近、仕事でお世話になることが多いMarionette.jsですが、
Marionette.jsの公式ドキュメントを確認していたところ
Marionette.Controllerがdeprecatedとなっていました。

Warning: deprecated. The Controller object is deprecated. Instead of using the Controller
class with the AppRouter, you should specify your callbacks on a plain Javascript object.

http://marionettejs.com/docs/v2.4.1/marionette.controller.html


ControllerはMarionette.AppRouterの処理を呼び出す為のモジュールだから、
AppRouterも使用しないということですかね?

でも、AppRouterはdeprecatedになっていませんね。


web上のサンプル実装を見ても探した限りでは
Marionette.Controllerを使用しているものがほとんどで、
よくわからないので調べました。


結論としては、JavaScriptのObjectを使用する」が正しいようです。

確かに、上述の警告文にも、よくよく見ると、書いてますね^^;


AppRouterのサンプルでも、その通りになっています。

var someController = {
  someMethod: function(){ /*...*/ }
};

Backbone.Marionette.AppRouter.extend({
  controller: someController
});

http://marionettejs.com/docs/v2.4.1/marionette.approuter.html


Controllerがdeprecatedになった経緯は以下ではないかと思います。

  1. 2.1以前には、Marionete.Controllerが存在していたが、MVCフレームワークのControllerと異なる使い方であり紛らわしかった。
  2. 2.1以降では、Marionette.Object が導入され、Controllerの代わりに使うようになった。
  3. 結果的に、Marionete.ControllerがAppRouter呼び出しだけに使用するものになったため、2.4でdeprecatedにした。

Prior Usage

Before Marionette 2.1, the Controller had another use, which was a general-purpose, white-label object. This was confusing given its other use within the Router, and its name, which carries so much meaning in the context of MVC frameworks.

As of v2.1, a new Class is available for your use: Marionette.Object. We recommend using Marionette.Object instead of Marionette.Controller in all situations outside of the Router.

http://marionettejs.com/docs/v2.4.1/marionette.controller.html

Marionette.js 2.4 以降を使う皆さんは、注意してください。

Acroquest Technologyでは、キャリア採用を行っています。

  • 日頃勉強している成果を、Hadoop、Storm、NoSQL、HTML5/CSS3/JavaScriptといった最新の技術を使ったプロジェクトで発揮したい。
  • 社会貢献性の高いプロジェクトに提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や対外的な勉強会の開催を通した技術の発信や、社内勉強会での技術情報共有により、技術的に成長したい。
  • OSSの開発に携わりたい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
 キャリア採用ページ