こんにちは。masudaです。
今日はBackbone.js 上のフレームワークであるMarionette.jsについて
小ネタを書こうと思います。
最近、仕事でお世話になることが多い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になった経緯は以下ではないかと思います。
- 2.1以前には、Marionete.Controllerが存在していたが、MVCフレームワークのControllerと異なる使い方であり紛らわしかった。
- 2.1以降では、Marionette.Object が導入され、Controllerの代わりに使うようになった。
- 結果的に、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の開発に携わりたい。
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
キャリア採用ページ