0

我正在考虑使用 Rejuicer http://rejuice.me/将我的 ASP.net MVC 站点的所有 JS 文件合并到一个 JS 文件中。这工作正常,但它不允许我添加或删除 JS 文件而不必重置/回收应用程序,因为所有配置都是在 Application_Start() 事件处理程序中设置的。

有没有人对我如何解决这个问题有任何想法。或者如果 Rejuicer 有更好的替代品?

4

2 回答 2

1

在 Application_Start 中加载配置是一种权衡。其他选项是挂接到 FileSystemWatcher 并等待文件夹更改。鉴于 Web 应用程序的性质,这并不理想。一些替代使用 web.config 也强制重置。

有像Workbench这样的工具可以在开发过程中完成它的工作(在 VS.NET 中)。这消除了对应用程序启动周期的依赖,并且在应用程序启动时文件就在那里。

于 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 回答