2

控えめなJavaScriptガイドラインを維持するために、すべてのJavaScriptを各ビューから個別の.jsファイルに移動しました。

ただし、1つのビュー内で、いくつかのJavaScript変数を動的に作成して、これらがViewBagに挿入され、ビューに直接レンダリングされるようにする必要があります。

    $(document).ready(function () {
        @(ViewBag.PrePop)
        @(ViewBag.PreDiscount)
    });

これは、新しいASP.netのバンドルおよびミニファイ機能を使用するまでは問題なく機能します。

これらすべての小さな外部JavaScriptファイルをバンドルしてから、すべてのページから結合されたスクリプトを呼び出すと、すべてのページ(ViewBagで発行された変数を含むページを除く)に変数参照エラーが発生します。

Uncaught ReferenceError: quotes is not defined 

つまり、これは基本的に、この特定のJavaScriptファイルをバンドルできないことを意味します。

ただし、縮小したいと思います。これを行うには、JavaScriptファイルを1つだけ含むバンドルを宣言しますか?

bundles.Add(new ScriptBundle("~/bundles/mypagescript").Include(
            "~/Scripts/mypagescript.js"));

または、ミニファイのみを実行する別の方法はありますか?

4

2 に答える 2

3

はい、現在、文字列を縮小するためだけに最適化を簡単に呼び出すためのメソッドを実際に公開していません (本当に必要な場合は、のインスタンスを介して行うことができますJsMinify.Process)。つまり:

string js = "//I am a comment\r\nfoo = bar;\r\nfoo = yes;";
JsMinify jsmin = new JsMinify();
BundleContext context = new BundleContext();
BundleResponse response = new BundleResponse(js, null);
response.Content = js;
jsmin.Process(context, response);
Assert.AreEqual("foo=bar,foo=yes", response.Content);

しかし、あなたが提案することはおそらく最善です(1つのファイルのバンドルを作成してください)。

于 2012-06-29T22:28:38.323 に答える