javascript - 如果我引用 .min 和完整脚本,asp.net mvc-5 bundle 将如何表现

标签 javascript asp.net-mvc asp.net-mvc-5 bundle

我正在开发一个 asp.net mvc-5 Web 应用程序。在我的包中,我定义了以下内容(我在其中引用 .js 和 min.js 文件):-

 bundles.Add(new ScriptBundle("~/bundles/jsTemplate").Include(
"~/bower_components/moment/min/moment.min.js",
"~/bower_components/fullcalendar/dist/fullcalendar.min.js",
"~/js/jquery.dataTables.min.js",

"~/bower_components/responsive-tables/responsive-tables.js",

"~/bower_components/bootstrap-tour/build/js/bootstrap-tour.min.js",

"~/js/jquery.raty.min.js",


            ));

我引用了一些 .js 和 min.js 文件,那么在这种情况下, bundle 将如何在生产服务器上工作?据我所知,bundle(当 debug=false 时)将执行以下 2 个主要任务:- 1. 将包内的所有脚本合并到一个文件中 2. 缩小合并文件。

现在在我的例子中, bundle 包含 minify 和非 minify 文件,那么这是否意味着 minify 文件将获得额外的缩小?或者缩小的文件无法缩小,并且 bundle 将按原样将 .min.js 传递给客户端?

最佳答案

该 bundle 将首先缩小所有文件(如果尚未缩小),然后将它们加入到将提供给浏览器的单个文件中,而不是几个独立的文件。

如果您已经缩小的文件包含无法进一步缩小的变量,它会这样做,并删除额外的空格和换行符。

顺便说一句,debug=false 并不是您可以用来测试这一点的唯一变量。您还可以在 BundleConfig 类中使用 EnableOptimizations,如果您有可以引用的 ConnectionString,则可以使用下面的代码在本地环境中对其进行测试,或者根据您的需要进行修改。

        using (DbContext Db = new DbContext())
        {
            if (Db.Database.Connection.ConnectionString.ToLower().Contains("localdb"))
                BundleTable.EnableOptimizations = false;
            else
                BundleTable.EnableOptimizations = true;
        }

如果 EnableOptimizations 为 false,服务器会将所有原始文件单独发送到浏览器(与您拥有它们的方式完全相同,无论是否缩小,但独立)。

编辑: 我只是对其进行了更多测试以确保,是的​​, bundle 并不关心您是否有 .min。在文件名中,它仍然会尝试缩小文件,另外我发现了一个我不知道它可能的功能,它改变了我的测试代码:

var foo = function(){
    var x = "Hello";
    console.log(x);
}

对此:

var foo;foo=function(){console.log("Hello")}

没有修改 foo,因为它位于全局命名空间中?但更令人惊讶的是,它去掉了 x 变量。

奇怪!?

关于javascript - 如果我引用 .min 和完整脚本,asp.net mvc-5 bundle 将如何表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34823107/

相关文章:

javascript - Openlayers 3 坐标

javascript - 显示下拉内容

javascript - IE onpropertychange 事件不会触发

c# - 如何在 If 语句中包含 HTML

c# - 映射对象时如何将自定义逻辑应用于AutoMapper?

javascript - 使用收到的数据更新模板

c# - 使用 Unity 在 ASP.NET MVC 中注入(inject)基本 Controller 构造函数

asp.net-mvc - 什么会在 Chrome 和 IE 中将我的 View 和 Controller 相互解除 Hook ,但在 Firefox 中却不会?

oauth - owin和oAuth2.0有什么关系?

c# - 如何验证 WPF 客户端对 ASP .NET WebAPI 2 的请求