首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我引用.min和完整的脚本,asp.net mvc-5 bunble会有什么行为

如果我引用.min和完整的脚本,asp.net mvc-5 bunble会有什么行为
EN

Stack Overflow用户
提问于 2016-01-16 11:07:42
回答 1查看 53关注 0票数 0

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

代码语言:javascript
复制
 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文件,那么捆绑包在这种情况下如何在生产服务器上工作呢?据我所知,捆绑包(当debug=false)将完成以下两个主要任务:- 1.将捆绑包内的所有脚本合并为一个文件2.缩小合并后的文件。

现在,在我的示例中,包包含minify和non-minify文件,那么这是否意味着minify文件将获得额外的缩减?或者缩小的文件不能缩小,捆绑包将按原样将.min.js交付给客户端?

EN

回答 1

Stack Overflow用户

发布于 2016-01-16 11:36:38

捆绑包将首先缩小所有文件(如果还没有缩小),然后将它们连接到一个文件中,该文件将提供给浏览器,而不是几个独立的文件。

如果已经缩小的文件中的变量比可以进一步缩小的变量多,那么它就会这样做,并删除额外的空格和换行符。

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

代码语言:javascript
复制
        using (DbContext Db = new DbContext())
        {
            if (Db.Database.Connection.ConnectionString.ToLower().Contains("localdb"))
                BundleTable.EnableOptimizations = false;
            else
                BundleTable.EnableOptimizations = true;
        }

如果EnableOptimizations为false,则服务器将把所有原始文件单独发送到浏览器(与您使用的方式完全相同,缩小与否,但都是独立的)。

编辑:我只是稍微测试了一下以确定,是的,捆绑包并不关心你是否有.min。在文件名中,它仍然会尝试do minify the file,另外,我发现了一个我不知道可能的功能,它改变了我的测试代码:

代码语言:javascript
复制
var foo = function(){
    var x = "Hello";
    console.log(x);
}

要这样做:

代码语言:javascript
复制
var foo;foo=function(){console.log("Hello")}

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

奇怪!?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34823107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档