15

バックボーンオブジェクトをAMD(中規模から大規模のアプリケーション向け)に編成することに関して、再利用性と複雑さの適切なバランスをとろうと奮闘してきました。

(A)すべてのバックボーンオブジェクト(モデル、ビューなど)を独自のモジュールに含める必要がありますか?(B)関連するバックボーンオブジェクトを同じAMDモジュールに含める必要がありますか?(つまり、同じモジュール定義内のPersonModel、PersonCollection、PersonViewオブジェクト)

オプション(A)は、最も柔軟性と再利用性を可能にするようですが、(潜在的に)ファイル数が多いため、最も複雑でもあります。オプション(B)を使用すると、管理が容易になる場合がありますが、柔軟性が低く、単体テストが非常に困難です。

他の誰もがこれらのものをどのように構成していますか(または持っていますか)?

4

3 に答える 3

5

requirejsの良いところは、物理ファイルを構造化された名前空間に抽象化できることです。アプローチ(A)を使用して、各バックボーンクラスを独自のファイルに作成してから、「名前空間」モジュールを作成して、関連するすべてのクラスを結合できます。

// Suppose you have PersonView.js, PersonCollectionjs, PersonModel.js as modules
// create a Person module to function as namespace
define(["PersonModel", "PersonCollection", "PersonView"], function(model, collection, view) {
     return {
        Model: model,
        Collection: collection,
        View: view
     };  
});

これにより、モジュールが独自のファイルに整理され、アプリケーションの残りの部分でこの編成を公開しなくても、クラスごとに1つのモジュールを作成できる柔軟性が得られます(require("PersonView", "PersonModel" ... )使用する必要があるたびに作成する必要はありません)。人のオブジェクトでは、消費者が独立したクラスではなく「名前空間」への依存関係を宣言する方が簡単でクリーンです)。

于 2012-08-29T22:30:15.347 に答える
1

中規模から大規模のバックボーンプロジェクトでは、モデル、コレクション、およびビューごとに個別のモジュールを備えたrequirejsを使用することを好みます。また、requirejsには「テキスト」プラグインを使用しているため、他のモジュールと同じようにアンダースコアテンプレートを読み込むことができます。これは私にとって大規模なプロジェクトを管理するための最も賢明な方法のようであり、私が持っているファイルの数に本当に圧倒されたことは一度もありません。

アプリを本番環境にプッシュするときにrequirejsオプティマイザーを使用すると+1します。本当にうまくいきます。 http://requirejs.org/docs/optimization.html

于 2012-08-28T13:47:46.093 に答える
0

オープンソースのツールキットをリリースしました。これは、私を助けるだけでなく、他の人にも役立つことを願っています。これは、多くのオープンソースツールを組み合わせたものであり、すぐに使用できるrequirejsバックボーンアプリを提供します。

実行する単一のコマンドを提供します:dev Webサーバー、jasmineシングルブラウザーテストランナー、jasmine js-test-driverマルチブラウザーテストランナー、およびJavaScriptとCSSの連結/縮小。また、本番デバッグ用にアプリの縮小されていないバージョンを出力し、ハンドルバーテンプレートをプリコンパイルし、国際化をサポートします。

セットアップは必要ありません。それはうまくいきます。

http: //github.com/davidjnelson ..。

于 2013-02-16T19:41:38.083 に答える