我正在考虑使用 Rejuicer http://rejuice.me/将我的 ASP.net MVC 站点的所有 JS 文件合并到一个 JS 文件中。这工作正常,但它不允许我添加或删除 JS 文件而不必重置/回收应用程序,因为所有配置都是在 Application_Start() 事件处理程序中设置的。
有没有人对我如何解决这个问题有任何想法。或者如果 Rejuicer 有更好的替代品?
我正在考虑使用 Rejuicer http://rejuice.me/将我的 ASP.net MVC 站点的所有 JS 文件合并到一个 JS 文件中。这工作正常,但它不允许我添加或删除 JS 文件而不必重置/回收应用程序,因为所有配置都是在 Application_Start() 事件处理程序中设置的。
有没有人对我如何解决这个问题有任何想法。或者如果 Rejuicer 有更好的替代品?
在 Application_Start 中加载配置是一种权衡。其他选项是挂接到 FileSystemWatcher 并等待文件夹更改。鉴于 Web 应用程序的性质,这并不理想。一些替代使用 web.config 也强制重置。
有像Workbench这样的工具可以在开发过程中完成它的工作(在 VS.NET 中)。这消除了对应用程序启动周期的依赖,并且在应用程序启动时文件就在那里。
在 _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")