複数ページのJavaScriptアプリケーションを構築しています。デザインパターンをよく読み、コア/ファサード/モジュールアプローチとルーズカップリング(イベントへのpub / subスクライブ)を使用してアプリケーションを作成しました。
デプロイ時にすべてのモジュールファイルと関連する依存関係を最小化して単一の外部JavaScriptファイルに結合する非常に優れたシステムを構築しました。アプリケーションの余分なHTTP要求を最小限に抑えることが設計目標です。したがって、AMD(非同期モジュール定義)にはあまり関心がありません。
NicholasZakasのプレゼンテーションである スケーラブルなJavaScriptアプリケーションアーキテクチャで定義されたガイドラインを使用しています
http://www.youtube.com/watch?v=vXjVFPosQHw
&&
大規模なJavaScriptアプリケーションアーキテクチャのため のAddyOsmaniのパターンhttp://addyosmani.com/largescalejavascript/
&&
このプレミアムチュートリアルは、NettutsのAndrew Burgessによる、モジュラーJavaScriptの作成 http://marketplace.tutsplus.com/item/writing-modular-javascript/128103/?ref=addyosmani&ref=addyosmani&clickthrough_id=90060087&redirect_back=true
私の質問は、このアプリケーションとそれに関連するモジュールのさまざまなページを管理する方法についてのアドバイスです。また、BackbonejsのRouterクラスとballuptonのHistory.jsライブラリを使用して、HTML5の履歴/状態APIを操作し、HTML状態APIをサポートしない古いブラウザーの下位互換性を維持しながら、更新せずにページを動的に読み込みます。私のすべてのページは、共通のコードベース(単一の縮小および圧縮されたjsファイル)を共有しています。
これが私のアプリケーションで使用することを考えている構造の概要です:
これは本質的にハイブリッドアプローチです。上半分は、相互に直接相互作用せず、ファサードを介して通知をパブリッシュ/サブスクライブする個別のモジュールを備えたコア/ファサード/モジュールパターンで構成されています。
下半分は、提案されたアプリケーション構造で構成されています。これは、状態/ URLが変更されたときに「メインコントローラー」に通知し、メインコントローラーはグローバル操作を実行します(まだ初期化されていない場合は、UIのヘッダーとサイドバーメニューを初期化するなど)そして、は関連するサブコントロールに、そのinit()メソッドを実行するように指示します(以前にロードされたコントローラーでdestroy();を呼び出します)。各サブコントローラー(例:ホームページ、カレンダーページ、予約ページなどに対応)は、使用可能なモジュールのプールからモジュールを選択して初期化します。
これは良いアプローチですか、それとも私は悪い方向に進んでいますか?モジュールはまだ互いに独立していることがわかります。これはスケーラビリティに優れています。
また、ルーターとコントローラーを個別のモジュールとして扱い、コアにパブリッシュ/サブスクライブさせることも検討しました。各コントローラーは、ページに必要なモジュールを何らかの方法で初期化します。