Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP.net Rejuicer动态组合js_Javascript_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript ASP.net Rejuicer动态组合js

Javascript ASP.net Rejuicer动态组合js,javascript,asp.net,asp.net-mvc,Javascript,Asp.net,Asp.net Mvc,我正在考虑使用Rejuicer将我的ASP.net MVC站点的所有JS文件合并到一个JS文件中。这可以正常工作,但它不允许我添加或删除JS文件,而无需重置/回收应用程序,因为所有配置都是在应用程序启动()事件处理程序中设置的 有没有人知道我该怎么解决这个问题。或者是否有更好的替代品 在应用程序启动时加载配置是一种折衷。另一种选择是挂接到FileSystemWatcher并等待文件夹更改。考虑到web应用程序的性质,这并不理想。一些替代方法使用web.config,这也会强制重置 有一些工具,比

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


有没有人知道我该怎么解决这个问题。或者是否有更好的替代品

在应用程序启动时加载配置是一种折衷。另一种选择是挂接到FileSystemWatcher并等待文件夹更改。考虑到web应用程序的性质,这并不理想。一些替代方法使用web.config,这也会强制重置


有一些工具,比如在开发过程中(在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")
@{
//使用Rejuicer将所有JS文件合并到一个文件中。
List JsFiles=new List();
//在这里定义JS文件列表
添加(“~/Scripts/One.js”);
添加(“~/Scripts/Two.js”);
if(System.Web.HttpContext.Current.Application[“JsFileListing”]!=null)
{
var JsFileListing=(List)System.Web.HttpContext.Current.Application[“JsFileListing”];
//检查是否有任何新的/删除的/重命名的文件
if(JsFiles.Except(jsfilereserviced).Count()>0 | | jsfilereserviced.Except(JsFiles.Count()>0)
{
//强制应用重置
HttpRuntime.UnloadAppDomain();
}
}
if(System.Web.HttpContext.Current.Application[“JsFileListing”]==null)
{
var Combiner=Rejuicer.OnRequest.ForJs(“~/Combined.js”).Combine;
foreach(JsFiles中的var文件)
{
Combiner.File(文件);
}
Configure();
System.Web.HttpContext.Current.Application[“JsFileListing”]=JsFiles;
}
}
@retreachicer.retreachied.JsFor(“~/Combined.js”)

我想到了web.config的想法,但是我觉得在其中列出js文件有点奇怪。我不确定你是否收到关于这个问题的更新通知,但我已经添加了一个可能的解决方案,我想知道你的想法。上面的示例只比较了文件的数量。将介绍添加或删除文件。但特定js文件中的内容更改不会被忽略。你能解释一下重设应用程序的主要问题是什么吗?通常,这在生产环境和开发环境中并不常见,重置也不是什么大问题。我个人更喜欢开发时间“榨汁”!Rejuicer本身检测到js文件的更改,所以我认为我不需要担心这一点。我与严格的前端开发人员合作,他们不编辑web.config或IIS设置。此外,我还有一些客户端,我们将代码发送给它们进行部署(我们无法控制生产),它们要求我们只发送已更改的文件。我知道有点痛。