【问题标题】:To bundle and minify JavaScript files, can I just concatenate file content then minify?要捆绑和缩小 JavaScript 文件,我可以连接文件内容然后缩小吗?
【发布时间】:2014-08-25 02:17:29
【问题描述】:

我有几个 JavaScript 文件需要手动打包和缩小。我们不能在应用程序启动解决方案中使用标准的 System.Web.Optimization 包,因为它会由于我们复杂的缓存需求而导致问题。

要捆绑和缩小这些内容,我可以只连接文件内容,然后使用像 System.Web.Optimization.JsMinify 这样的简单处理器进行缩小吗?会不会有某些类型的 JS 代码不适合这种方法?

【问题讨论】:

  • 我认为这是一个坏主意,原因有两个:1. 某些文件以“}()”结尾,如果用“(function(){”连接会导致语法错误(插入修复此问题之间的半)。2 更糟:代表任何脚本的意外“使用严格”可能会破坏整个堆栈,或者只是其中的一些脚本。如果你能防范这些,在收缩 之前进行一个 concat通常会产生更精简的输出,分别压缩它们。
  • @dandavis 答案不就是写正确的 JavaScript 吗?
  • 很多时候我们不编写文件,我们不想分叉或修复我们捆绑的每个依赖项,其中一些,尤其是使用 uglify/closure 缩小的依赖项不会总是堆得很好。除了全力以赴并希望浏览器支持它之外,我们也无法控制包含如何实现“使用严格”...

标签: javascript .net bundling-and-minification


【解决方案1】:

所有纯 javascript 的内容(即您没有将诸如咖啡脚本之类的内容连接到 javascript 文件),并且正确关闭应该可以很好地连接。连接文件的顺序很重要,它应该与当前同步加载脚本的顺序相同。

代码未正确关闭:

file1.js

var ten = 10;
var twenty = 

file2.js

$(document).ready(function() {
    // Do stuff
});

如果这些文件是分开的,file1 会抛出错误,但 file 2 会正确运行。如果将它们连接起来:

var ten = 10;
var twenty = 

$(document).ready(function() {
    // Do stuff
});

将抛出错误,并且不会执行文档就绪语句。希望你的代码中没有类似的东西,但你永远不知道。

【讨论】:

  • “正确关闭”是什么意思 - 有 (function() { // code })();围绕依赖局部变量的代码?
  • 这是一个很好的方法,但我真正的意思是在文件末尾没有任何会引发错误的开放代码。我将添加一个示例...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 2018-04-14
相关资源
最近更新 更多