6

MVC4をダウンロードして、標準プロジェクトでバンドル機能がどのように機能するかを調べようとしています。バンドルを持っているように見えます:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>

含まれているスクリプト内のすべてのjquery.jsファイルを戻しますが、knockout.jsファイルは戻しません。どうしてこれなの?また、_references.jsファイルとは何ですか?また、knockout.jsファイルがコメントアウトされているのはなぜですか?

4

3 に答える 3

8

プロジェクトGlobal.asaxファイルを調べると、次のようなものが見つかります。

protected void Application_Start()
{
    ...
    BundleTable.Bundles.RegisterTemplateBundles();
}

現在、RegisterTemplateBundlesは事前定義されたスクリプトのサブセットのみを登録しています。

  • jquery- *
  • jquery.mobile *
  • jquery-ui *
  • jquery.unobtrusive *
  • jquery.validate *
  • MicrosoftAjax.js
  • MicrosoftMvc.js
  • modernizr *
  • AjaxLogin.js

追加のファイルが必要な場合は、次のいずれかに変更できRegisterTemplateBundlesますEnableDefaultBundles

protected void Application_Start()
{
    ...
    BundleTable.Bundles.EnableDefaultBundles();
}

または、独自のカスタムバンドルを作成します(バンドルとミニファイについて詳しくは、こちらをご覧ください)。EnableDefaultBundlesまた、パフォーマンスにいくらかの影響があることも知っておく必要があります。

この_references.jsファイルは、JavaScriptインテリセンス用のVisualStudioによって使用されます。次の記事から詳細を学ぶことができます:

于 2012-05-14T11:29:11.740 に答える
2

tpeczekは正しいです。ほとんどの人はKnockout.jsを使用しないため、デフォルトでは含まれていません。バンドル/ミニファイ(BM)は、RCで大幅に変更され、バンドルにファイルを追加するのがはるかに簡単になります。バンドルとミニファイのチュートリアルを参照してください

于 2012-05-15T05:00:22.170 に答える
0

RegisterTemplateBundles()の後に次のコード行を追加して、ファイルをバンドルに追加することができました。

BundleTable.Bundles.RegisterTemplateBundles();
BundleTable.Bundles.Where(x => x.Path == "~/Scripts/js").First().AddFile("~/scripts/knockout-2.0.0.js");
于 2012-05-22T19:29:00.420 に答える