4

使おうとしています

http://blogs.msdn.com/b/cdndevs/archive/2012/01/23/javascript-and-css-minifying-bundling-with-the-microsoft-web-optimization-nuget-package.aspx

私のcssファイルとjsファイルを縮小してバンドルするには

私が見つけたすべての例には、masterpage/_layoutファイルにあるすべてのスクリプトが含まれています。

私は持っていることができるようになりたいです

 @RenderSection("Script", false)

_layoutファイルに、このような「サブビュー」からスクリプトを追加します

@section Script {
<script src="@Url.Content("~/Scripts/Configuration/Configuration.js")" type="text/javascript"></script>
}

今私の質問は、バンドルにファイルを動的に追加し、キャッシュバストを強制する方法です。

今私はこれを持っています

 public static void AddBundleFile(this HtmlHelper helper, string path, Type type, int index)
    {
        var bundle = BundleTable.Bundles.GetRegisteredBundles()
            .Where(b => b.TransformType == type)
            .First();

        bundle.AddFile(path);
    }

「サブビュー」からファイルを追加しますが、バンドルファイルは更新されません。

4

1 に答える 1

3

どの部分で問題が発生しているのか、100%わかりません。バンドルを動的に含めたいようですね。私は、JSを動的に取得し、それを特定の順序でマージ/結合するメカニズムを使用しないように心がけています。

遅かれ早かれ、どのJSがどの順序で含まれるかをきめ細かく制御する必要があります。これに対処するのが早ければ早いほど、アプリの将来性が高まります。すべてのスクリプトをフォルダーに自動的にバンドルする機能さえ構築したことは苛立たしいことですが、それは非常に悪い考えです。

そのため、JavaScriptファイルとバンドルのインクルードの順序を指定しなければならないという非常に小さな煩わしさが残ります。これを行うList<string>には、アプリの起動時に消費される単純なものを維持します。

今のところ、私たちの使用では、サイトの大きなバンドルを1つだけ処理できると思いますが、バンドルを指定する機能を設定してから、バンドルの包含順序も指定することができました。結局、あなたはただ行き過ぎてしまうでしょうList<T>

スクリプトの部分的な外観は次のとおりです。バンドルを使用するか、個別に含まれるjavascriptファイルを使用するかを動的に切り替えることができます。

@if (NameSpace.UI.UseBundledResources) // set in the web.config, different per environment
{
    <script src="@Url.ContentNoCache("~/bundle.js")" type="text/javascript"></script>    
}
else
{
    foreach (var file in NameSpace.UI.JavaScriptFileNames)
    {
    <script src="@Url.ContentNoCache(file)" type="text/javascript"></script>  
    } 
}

そして私たちのアプリが始まります

var customJsFiles = NameSpace.UI.JavaScriptFileNames;
var myJSBundle = new Bundle("~/bundle.js", typeof(JsMinify));
customJsFiles.ForEach(f => myJSBundle.AddFile(f));
BundleTable.Bundles.Add(myJSBundle);
于 2012-05-24T05:24:54.547 に答える