15

現在、エンタープライズASP.NETMVCアプリケーションで使用するためにDurandalを評価しています。

ただし、Durandalで使用されるデフォルトの規則は、私が慣れ親しんできたMVCの規則と矛盾しているようです。

JohnPapaによるHotTowelMVCテンプレートは素晴らしいですが、これもAppフォルダーに物を置くことで、デュランダルを支持するMVC規則を「廃止」しているようです。

これらの規則に関して私が抱えている問題のいくつかは次のとおりです。

  • ビューは2つの場所(/ App /viewsと/Views)に分割される可能性があります。
  • スクリプトも2つの場所(/ App /durandalと/Scripts)に分割されます。
  • ビューは、のデフォルトのMVCロケーションにありませんRazorViewEngine

各要素を適切なMVC規則に含めたままにしておきたいと思います。

/Controllers/
---- HomeController
---- AdminController

/Scripts/    
---- durandal/    
---- viewmodels/    
-------- Home
-------- Admin

/Views/    
---- Home    
---- Admin

私の質問は次のとおりです。

  1. 上記(または同様のもの)を達成するようにDurandalを構成することは可能ですか?

  2. デフォルトのデュランダルの慣習から離れて冒険するのは賢明ですか?

  3. そうすることの潜在的な問題は何ですか?

4

2 に答える 2

18

1. 上記 (または同様のもの) を達成するように Durandal を構成することは可能ですか?

はい、あなたの心が望むフォルダ構造を持つことができます。Durandal はアプリケーションにフォルダー構造を課すことはありませんが、完全にオーバーライド可能なデフォルトの規則があります。

Durandalsルーターを使用している場合は、モジュールを見つけるように構成する方法を調べる必要があります。これを行うには多くの方法がありますが、私はrouter.autoConvertRouteToModuleId.

ルーター プラグインを使用していない場合は、モジュールの URI を自分で管理する必要があります。これは、requirejs の規則に従い、この規則を durandals構成モジュールと共に使用することによって行われます。

また、 viewlocators規則をオーバーライドすることで、モジュールにバインドするビューを見つける方法をオーバーライドできます。Durandal は、箱から出してすぐに小さなアプリケーションを構築する非常に単純な方法を提供しますが、より大きなアプリケーションを構築する必要がある場合は、独自の規則を作成することをお勧めします。

2. デフォルトのデュランダルの慣習から離れることは賢明ですか? 3. その際の潜在的な問題は何ですか?

したがって、モジュールを検出する方法と、完全にオーバーライド可能なビューを検出する方法の規則があります。これらをオーバーライドして、自分に最適な方法を選択することをお勧めします。しかし、上記のようにスクリプトフォルダー内に durandal を配置することについては、良い考えだとは思いません。

これをお勧めしない理由は、scripts フォルダーが、AMD 以外のモジュールであるすべてのサードパーティ スクリプトの場所であると考えているためです。これは、Durandal には、すべての html/css/js (amd) ファイルを 1 つのファイルに縮小/圧縮/醜化する optimizer.exeも付属しているためです。

アプリケーション全体を app フォルダーの下に保持し、durandal フォルダーを app フォルダー内に保持する場合、オプティマイザーは app/durandal/amd フォルダー内に存在するため機能します。そのため、実行すると、2 つのディレクトリをアプリ フォルダーに移動し、すべてのサブフォルダーをスキャンしてapp.build.js requirejs 最適化ファイルを作成し、アプリケーション全体を 1 つのファイルに圧縮します。

これにより、プロジェクトに新しいファイルを追加するたびに app.build.js ファイルを手作業で編集する必要がなくなります。確かに..これを行うことができる他のツールもあります..しかし、それらのAPIとそれらを構成する方法を学ぶのに時間を費やす必要があります. うなり声のようなものを学ぶことに時間を割きたくない場合はこのオプティマイザーが最適です。個人的には、何かをダブルクリックするだけでアプリケーション全体を構築できる機能が気に入っています。

amd 以外のすべてのサードパーティ ライブラリを別のスクリプト フォルダに配置することについては、MVC のバンドルを使用するように、それらを個別に圧縮することを検討します。これらを個別にバンドルする理由は、これらのファイルが頻繁に変更されることはなく、それらを個別の js ファイルにバンドルすると、ブラウザによって個別にキャッシュされる可能性があるためです。一方、スパが変更されている場合は、おそらくそうなるでしょう..圧縮されたアプリケーションを再ダウンロードするだけで済むように、ブラウザーにそれを個別にキャッシュさせたいとします。

于 2013-03-22T01:49:14.340 に答える