0

ビューの 1 つで Google マップを利用するアプリケーションがあります。これは、デュランダルのビュー/ビューモデル ファイル構造を規約に従って使用する SPA です。私が解決しようとしている問題は、マップ ビュー (Google マップ) を共有する機能モードが非常に多様であることです。例として、アプリケーションは車両の現在位置をマップ上に表示し、車両の履歴情報 (パス) を表示し、ジオフェンスの作成、編集、および削除を許可する必要があります。マップを使用する各モードでは、一部の UX コントロールを非表示にし、他のコントロールを表示する必要があります。

上記のすべてのビューモデル ロジック コードが配置されると、ビューモデルが非常に大きくなり、保守とコーディングが困難になると思います。これらすべての UX コントロールのロジックを含む巨大なビューモデル ファイルを作成しないようにしています。

概念的には、複数のビューモデル ファイルを単一のビュー ファイルでシームレスに動作させたいので、複数のビューで Google マップを繰り返す必要はありません。また、可能であればKnockoutを使用して簡単/自動バインディングを維持したいと考えています。単一のビュー ファイルを維持しながら、大きなビューモデル ファイルを分割するためにデュランダルを使用するソリューションは何ですか? これは可能ですか、それとも望ましいですか?

4

1 に答える 1

0

私はrequirejsを読みます。Durandal は、javascript ファイルを構造化する方法として requirejs を使用します。Requirejs はAMD パターンに従っており、かなり多くのことを行います。カプセル化を使用してプライベート変数を作成できるようにし、グローバル名前空間の汚染を防ぎます。

AMDには、オブジェクトの作成に使用される関数を返すシングルトンまたはamdモジュールを使用できるパターンもあります。OO 言語での Class の使用方法とよく似ています。Javascript の継承はちょっとファンキーですが、継承がどのように機能するかを理解するには、少し読む必要があるかもしれません。

したがって、すべての js ファイルが 100 万個の小さなモジュールに分割されると、ermergawd のようになります... 私のスパゲッティ コードはマカロニ コードになりました!

しかし、恐れる必要はありません。マカロニ コードはすべて、requirejs のr.jsを使用して圧縮/縮小/醜化することができます。r.js は、すべての html/css/js を 1 つのファイルに圧縮できます。これは、アプリケーション/サイト全体である可能性があります。Durandal は、これらすべてを自動的に行う素晴らしいオプティマイザーも提供します。

于 2013-04-16T19:28:33.973 に答える