0

Asp.net MVC に Web プロジェクトがあり、多くのページにドロップダウン リスト コントロールがあります。これらのドロップダウン リストの値が変更された場合、一部の div タグを更新するためにコントローラー アクションへの要求を行う必要があります。

そのために、jquery の $(document).ready() 関数を使用し、次のような関数を作成します。

$("#ComboBox").change(function() { /* do something here */ });

$.get('@Url.Action("Action", "Controller")', function (result) { 
    // TODO: process the results of the server side call
});

問題は、jquery のドキュメント準備完了イベントが発生したときに、すべてのページで実行する必要があるすべてのことのリストを含む大きな JavaScript ファイルを作成したくないことです。

たとえば、あるページには、コントローラ x のアクション x へのリクエストを作成するコンボボックスがあり、別のページには、コントローラ y のアクション y へのリクエストを作成する別のコンボボックスがあります。

これらのページごとに別個の javascripf ファイルを作成するのが適切な戦略であるかどうかはわかりません。

私に何ができる?特定のドキュメント準備機能ごとに JavaScript を作成しますか? すべての関数を同じ JavaScript ファイルの同じドキュメント対応関数に入れると、jquery でコントロールによって参照される ID とクラスの名前の競合はどうなりますか? また、すべての関数が同じ JavaScript にある場合、ドキュメント準備関数の関数の 90% を使用していないページはどうでしょうか。

4

3 に答える 3

1

javascriptがクライアント側でますます大きくなるとき、あなたは本当にメンテナンスについて考える必要があります。jQueryは本当に使いやすいですが、問題は突然、多くの場所でコールバック/ハンドラーが管理を困難にするのを目にすることです。コードをより適切に整理するのに役立つBackbone.jsなどのクライアント側で何らかのMVCライブラリを使用することをお勧めします。

2つ目は、開発の観点から、アプリケーションで使用される完全なJavaScriptをモジュール/コントローラーごとに別々のファイルに分離する必要があります。すべてのJavaScriptを1つのファイルに結合するのに役立つミニファイフレームワークを使用できます。

ASP.NET MVC 4自体は、一連のjsまたはcssファイルを組み合わせて縮小するのに役立つバインド/縮小をサポートしています。

http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification http://weblogs.asp.net/scottgu/archive/2011/11/27/new-bundling-and-minification-support-asp -net-4-5-series.aspx

于 2012-06-15T06:17:30.227 に答える
1

大きな javascript ファイルが 1 つあることは問題ではなく、実際には望ましいことです。JavaScript の大部分を 1 つのファイルに配置することで、ブラウザーはこのファイルをキャッシュできるため、その後のページの読み込み時にサーバーから JavaScript を取得する必要がなくなり、ページの読み込みが高速化されます。JavaScript ファイルを分割したい場合もありますが、メンテナンス上の理由からです。たとえば、すべての顧客関連ページなどに customer.js ファイルを用意することは理にかなっているかもしれません。

ドキュメント準備完了イベントで個々のイベント ハンドラーをセットアップするには、ページの読み込みにインライン JavaScript を含めることができます。これにより、サーバーが生成した場合に実際のコントロール ID を設定できます (例: <% Combo.ClientID %> を使用)。このコードは、メインの js ファイルで適切な関数を呼び出すだけです。

于 2012-06-15T02:19:28.077 に答える
0

アプリケーションが非常に大きい場合は、機能領域ごとに整理するのが理にかなっていますが、小さなjsファイルがたくさんある場合は、それらを一緒に配置することをお勧めします。そうは言っても、さまざまなjavascriptファイルを最小化してグループ化し(ライブまたはビルドプロセスの一部として)、変更を監視することさえできる優れたツールがいくつかあります。どちらも.less/coffeescriptなどをcssに変換することもできます。

スクイーズとチャーピーをチェックしてください。どちらもNugetで利用できると思います。

Squishit: http: //www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher

Chirpy:http ://chirpy.codeplex.com/

一般的な知恵は、最初のページビューにロードされるjsファイルが1つある場合、それは後続のページビューのためにキャッシュされるというものです。これが一般的に、それらすべてに対して1つのファイルを提供したい理由です(ただし、開発時にそれらを分離しておくことができます)。

于 2012-06-15T02:38:16.167 に答える