Ember.jsはJavaScriptで実装されたMVC(Model-View-Controller)フレームワークの1つでHandlebarsをテンプレートエンジンに採用し、コントローラとモデルの役割を従来のフレームワークと異なった形で定義しようとしています。公式ドキュメントによればEmberにおけるMVCの役割は次のように定義されています。
- ビューはテンプレートの中に埋め込まれ、各種のイベント情報をコントローラに送る
- コントローラはアプリケーションの状態を表し、テンプレートに対してモデルの実態として振る舞うことが多い
- モデルは永続的な状態を持つオブジェクト
実際にEmber.jsを解説する動画を作成するためにEmber.jsを触ってみたRob Conery氏は次のような感想を持ったようです。
- コントローラが結局、ビューをコントロールしてる
- モデルがコントローラ的である
- 命名規則が複雑(ネーミングガイドとケーシングガイドがある)
肥大化しがちなコントローラと単純なデータベースアクセスクラスに終始しがちなモデルを再定義しようとしている試みが新たな混乱を生み出しているようです。Ember.Jsが今後成功するかはまだわからない状況ですが、MVCフレームワークを使う際、それぞれのレイヤにどのような責務を担当させるかという問題に関する議論は、いつまでも終わることはないことを感じさせます。
URL:http://wekeroad.com/2013/03/06/ember-confuses-me