0

Rejuicer http://rejuice.me/を使用して、ASP.net MVC サイトのすべての JS ファイルを 1 つの JS ファイルに結合することを検討しています。これは問題なく動作しますが、すべての構成が Application_Start() イベント ハンドラーで設定されているため、アプリケーションをリセット/リサイクルすることなく JS ファイルを追加または削除することはできません。

どうすればこれを回避できるかについて、誰かアイデアがありますか。または、Rejuicer のより良い代替手段がある場合は?

4

2 に答える 2

1

Application_Startでの構成のロードは、トレードオフです。他のオプションは、FileSystemWatcherにフックして、フォルダーの変更を待つことです。Webアプリケーションの性質を考えると、これは理想的ではありません。いくつかの代替手段は、リセットを強制するweb.configを使用します。

(VS.NETで)開発中にそのことを行うWorkbenchのようなツールがあります。これにより、アプリケーションの起動サイクルへの依存がなくなり、アプリの起動時にファイルが存在します。

于 2012-11-07T15:23:40.633 に答える
0

_layout.cshtml ファイルには、これに似たコードがあります。サイトの js ファイルのリストは、サイトをリセットまたは再コンパイルすることなく、ここで定義できます。

@{

    //combine all JS files into one file using Rejuicer. 
    List<string> JsFiles = new List<string>();

    //define list of JS files here
    JsFiles.Add("~/Scripts/One.js");
    JsFiles.Add("~/Scripts/Two.js");      


    if (System.Web.HttpContext.Current.Application["JsFileListing"] != null)
    {

        var JsFileRejuiced = (List<string>)System.Web.HttpContext.Current.Application["JsFileListing"];

        //check if we have any new/removed/renamed files
        if (JsFiles.Except(JsFileRejuiced).Count()> 0 || JsFileRejuiced.Except(JsFiles).Count() > 0)          
        {
            //force application reset
            HttpRuntime.UnloadAppDomain();                
        }
    }

    if (System.Web.HttpContext.Current.Application["JsFileListing"] == null)
    {

        var Combiner = Rejuicer.OnRequest.ForJs("~/Combined.js").Combine;

        foreach (var file in JsFiles)
        {
            Combiner.File(file);
        }
        Combiner.Configure();

        System.Web.HttpContext.Current.Application["JsFileListing"] = JsFiles;
    }
}
@Rejuicer.Rejuiced.JsFor("~/Combined.js")
于 2012-11-09T10:19:15.823 に答える