6

私はしばらくJavascriptでプログラミングをしています。最近、私は非常に巨大な jQuery プロジェクトを作成し、次の素晴らしい記事で説明されているようにモジュール パターンを適用しました: http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth

これはすべてうまくいき、コードは滑らかで扱いやすいように見えますが、もっと良くなる可能性があると感じました. 私は 1 日を費やして、いくつかの Javascript フレームワークを探しましたが、そのほとんどは次のようなものです。

  • UI バインディングをサポートする
  • テンプレートシステムを持っている
  • jQueryで動作可能
  • モジュールパターンで行ったのと同様の方法でコードを整理するのを手伝ってください

AngularJS、KnockOutJS、SpineJS、JavascriptMVC などのフレームワークに出くわしました。本当に際立っていて、非常に賞賛されたのは EmberJS でした。

試してみることにしましたが、簡単ではありませんでした。EmberJS のチュートリアルは非常に限られています。長い間試した後、何とか実行することができました。EmberJS の機能が気に入っています! 私が理解できないように見えることが1つだけあります-これは私の質問でもあります.Ember名前空間(Ember.Application.createで作成)を拡張するにはどうすればよいですか?

明確にするために:私のプロジェクトの古いバージョンには、コア名前空間とユーティリティ名前空間がありました。どちらにも、他のすべてのクラスが使用できるそれぞれの機能が含まれていました。初期ネームスペースの上に関数を含む Core および Util ネームスペースを作成するにはどうすればよいですか?

私はただやりますか:

MyNamespace = Ember.Application.create();
MyNamespace.Core = Ember.Application.create();
MyNamespace.Util = Ember.Application.create();

または、他の何か?

4

1 に答える 1

10

をネストすることはできませんEmber.Namespace(Ember.Applicationのサブクラスである場合Ember.Namespace)。 issue #683を参照してください。

中心的な貢献者の 1 人である Tome Dale は、複雑なアプリケーションのレイアウトに関する興味深い回答を追加しました。コメントを参照してください。

したがってApp = Ember.Application.create()、この名前空間でコントローラー、ビューなどを使用して作成することができます。または、他のプロジェクト/アプリケーションでコードを再利用する場合は、名前空間を次のように分割できます。

Util = Ember.Namespace.create({
    importantNames: 'Einstein'.w()
});

Core = Ember.Namespace.create({
    sqrt: function(x) { return Math.sqrt(x); }
});

App = Ember.Application.create();

...

App.myListController = Ember.Object.create({
    importantNamesBinding: 'Core.importantNames',
    sqrtBinding: 'Util.sqrt'
});

を拡張し、イベント (クリックなど) の処理に関する機能を追加しますEmber.ApplicationEmber.Namespaceこのようなものは、ビューを使用してアプリケーションを作成するときに役立ちます。Core名前Util空間では、そのようなものは必要ありません。そのため、これは単なるEmber.Namespace.

于 2012-04-22T20:30:38.097 に答える