3

私は mvc4 で作業しており、CSS と JavaScript のバンドルがどのように機能するかを調べています。サポートが必要な質問があります。

レンダリングするページ (ビュー) ごとに、js ファイルと css ファイルを 1 つだけ用意したいと思います。これは、そのビューに必要な複数のファイルの集大成です。私が見たところ、ファイルのバンドルを作成できますが、ビューごとにバンドルを作成する方法がわかりませんでした。

私が概説したことを達成することが可能であれば、誰かがこれを手伝ってくれますか?

4

2 に答える 2

1

質問をより具体的にしてください。あなたが試したことを見せてください。各バンドルを手動で作成する必要があります。バンドルを特定のビューで使用する場合は、そのようなバンドルを作成し、ビューでそのバンドルを使用することを指定します。これは、ビューで css ファイルを使用することを指定するのと同じです。

于 2012-12-31T03:52:01.273 に答える
1

あなたがする必要があるのは Static>App_Start>BundleConfig.cs に行くことです:

バンドル構成パス

次に、持っているビューごとにバンドルを作成します。

public class BundleConfig
{
    // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/GlobalScripts")
                            .Include("~/Static/Scripts/jquery-1.10.2.js"
                                    , "~/Static/Scripts/json2.js"
                                    , "~/Static/Scripts/jquery-ui-1.10.4.js"
                                    //, "~/Static/Scripts/jquery.layout-1.3.0.js"
                                    //, "~/Static/Scripts/jquery.layout.state.js"
                                    , "~/Static/Scripts/helper.mainlayout.js"));
    }
}

.Include()ビュー内のすべての JavaScript に対してスクリプト パスを追加し続けbundles.add(new ScriptBundle(<bundle path>))、すべてのビューに対して実行を続けます。

CSS バンドルで同様の手順を実行しますが、使用する代わりに使用しScripBundleますStyleBundle

コードの繰り返しを減らすには、互いに依存しているすべての JavaScript の文字列のリストを作成し、それらを結合してみてください。

List<string> jqGridScripts = new List<string>
                             {"~/Static/Scripts/jquery.jqGrid.src.js"
                             , "~/Static/Scripts/i18n/grid.locale-en.js"
                             , "~/Static/Scripts/helper.jqgrid.js"};
List<string> jqStopwatch = new List<string> 
                             { "~/Static/Scripts/jquery.stopwatch.js" };

bundles.Add(new ScriptBundle("~/bundles/viewName")
                             .Include(jqGridScripts
                                     .Union(jqStopwatch).ToArray()));

配列に表示される順序は、HTML に表示される順序、またはバンドルされて縮小される順序と同じであることを覚えておいてください。

ビュー内のコード:

@section scripts{
    @Scripts.Render("~/bundles/viewName");
}

HTML の結果コード

<script src="/WDCSS/bundles/viewName?v=T3IlBuvfGTiz62pwDuiPogFX1jQoxVC2tmp3K6wffBQ1"></script>

私の意見

これをやるべきかどうかはよくわかりません。私にとっては、キャッシュされるように、すべてのページで使用されるスクリプトを別のバンドルに分けています。次に、ビューで使用されるスクリプト用に別のバンドルを作成します。私が言おうとしているのは、バンドル、ミニフィケーション、キャッシングの間でバランスをとるべきだということです。

于 2015-02-23T04:49:59.263 に答える