7

ええと、この問題に適切なタイトルを付けるのは難しいです。すみません。

私が構築しているbackbone.jsアプリケーションで。モデル、ビュー、テンプレートはすべて個別のjavascript、htmlファイルにあります。モデル、ビュー、およびテンプレートを、グローバル変数を汚染することなく、つまり実行せずに、アプリケーションのbootstapperファイル(app.js)にエクスポートしたいと思いますwindow.App.Model = myModel;。エクスポートとは、ファイル内のコードをapp.jsで初期化して実行できるようにすることを意味します

  1. どうすればこれを行うことができますか?

  2. 問題を解決するパターンはありますか?例を教えてください

説明

モデル、ビュー、およびテンプレートが多くの異なるファイルに分割されている場合、アプリケーションのブートストラッパーファイルapp.jsには、これらのM、V、Cコンポーネントにアクセスするための何らかの手段が必要です。したがって、一般的なアプローチは、model.jsファイル内で以下を行うことです。

window.App.Model.PersonModel = Backbone.Model.extend({});

App.js

var instance = new window.App.Model.PersonModel();
var personView = new window.App.Views.PersonView({model:instance});

最後に、すべてがグローバルオブジェクトから派生していることがわかりますApp。これは、アプリケーションの依存関係を構築するための安全ではなく、不適切で弱い方法ではないと思います。

提案

上記の質問に対して、誰かがテンプレートをロードするために使用できるテンプレートロードライブラリ(使用されているエンジンに関係なくjavascriptテンプレート)を提案できますか?

4

1 に答える 1

3

非同期モジュール定義/ロードをサポートするRequireJSを見てください。モジュールをAMDapiに書き直してapp.js満足させる必要がありますが、必要なコード文字列はごくわずかです。

于 2012-11-26T09:07:55.727 に答える