我正在开发一个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文件,那么捆绑包在这种情况下如何在生产服务器上工作呢?据我所知,捆绑包(当debug=false)将完成以下两个主要任务:- 1.将捆绑包内的所有脚本合并为一个文件2.缩小合并后的文件。
现在,在我的示例中,包包含minify和non-minify文件,那么这是否意味着minify文件将获得额外的缩减?或者缩小的文件不能缩小,捆绑包将按原样将.min.js交付给客户端?
发布于 2016-01-16 11:36:38
捆绑包将首先缩小所有文件(如果还没有缩小),然后将它们连接到一个文件中,该文件将提供给浏览器,而不是几个独立的文件。
如果已经缩小的文件中的变量比可以进一步缩小的变量多,那么它就会这样做,并删除额外的空格和换行符。
顺便说一句,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,则服务器将把所有原始文件单独发送到浏览器(与您使用的方式完全相同,缩小与否,但都是独立的)。
编辑:我只是稍微测试了一下以确定,是的,捆绑包并不关心你是否有.min。在文件名中,它仍然会尝试do minify the file,另外,我发现了一个我不知道可能的功能,它改变了我的测试代码:
var foo = function(){
var x = "Hello";
console.log(x);
}要这样做:
var foo;foo=function(){console.log("Hello")}没有修改foo,因为它在全局命名空间中?但更令人惊讶的是,它去掉了x变量。
奇怪!?
https://stackoverflow.com/questions/34823107
复制相似问题