1

要約すれば

JavaScript をバンドルして縮小する場合、単一のサイト全体の JS バンドルまたは複数の特定のバンドルを使用することをお勧めしますか?

後者の場合、これらのバンドルを各ビュー (レイアウトではなく) に追加し、デバッグ モードのときに、縮小されていない個々の JS ファイルをサーバーに返すにはどうすればよいでしょうか?

詳細に

ASP.NET MVC3 Web アプリケーションで MVC4 フレームワークで利用できるバンドルとミニフィケーションを使用する方法を詳述した非常に興味深い記事を読みました

この記事では、レイアウト ページから特定のバンドルへのリンクを追加する方法について説明します。

Scripts.Render("~/bundles/MyBundle")

そして、このアプローチがサイト全体のバンドルを作成するのにいかに優れているかがわかります。

ただし、単一のサイト全体のバンドルを使用するか、複数の特殊なバンドルを使用するかについてのベストプラクティスが何であるかはわかりません。ここでアドバイスをいただければ幸いです. 私が見ているように、単一のサイト全体のバンドルの長所と短所は次のとおりです。

  • 短所:
    • ホームページの初期読み込みが遅くなる (最小化しても)
    • JS の競合がないことを確認するのが難しい場合があります。
  • 長所:
    • 後続のすべてのページには、新しくダウンロードするものはありません
    • 管理するバンドルは 1 つだけ

オーケー - ベスト プラクティスが複数のバンドルであることが判明したと仮定すると..その場合、レイアウト ページにバンドルを追加するのがいかに簡単かはわかりますが、特定のビューはどうですか? 各ビューは、必要な JS を (スクリプト セクションで) 登録する必要があります。次に、これがページの本文の下部に追加され、最後に読み込まれるようになります (最初に読み込まれるようにヘッダーに追加する CSS とは異なります)。私は次のコードを使用してこれを管理しましたが、このルートの問題は、JSが常に単一の縮小されたファイルとして出力され、デバッグ モードではあまり役に立たないことです。

@<script src="@Scripts.Url("~/bundles/myBundle")"></script>

よろしくお願いします

グリフ

4

1 に答える 1

2

両方できます。特殊化されたバンドルをレンダリングするには、次のようにします。

_Layout.cshtml にスクリプト セクションを作成します。私は通常、body タグの直前にページの下部に配置しますが、head に配置することもできます。

@RenderSection("scripts", required: false)

次に、ビューで、次のようにセクションを定義します。

@section scripts {

    @Scripts.Render("~/bundles/myspecialuniquebundlejustforthisview")

}

このようにすると、debug="false" でコンパイルするか、BundleTable.EnableOptimizations = trueデバッグ時に明示的に設定した場合にのみ、バンドルが圧縮および縮小されます。

于 2013-01-23T18:01:24.757 に答える