UglifyJS'使用严格'声明

时间:2013-12-19 14:50:24

标签: javascript gruntjs bundling-and-minification uglifyjs

我正在使用Grunt与grunt-contrib-uglify任务联系起来,以便在我的应用中缩小JavaScript。

缩小后,除了第一个语句之外,它删除了每个'use strict'语句,所以我得到一个巨大的JavaScript文件,顶部有'use strict'指令。

问题是全局'use strict'指令使浏览器在“严格模式”下执行我在项目中使用的每个lib的代码,并且它导致错误,因为不是每个第三方代码都被写入对于严格模式。

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:7)

如果您使用IIFE包装所有脚本,则grunt-contrib-uglify不会将该语句置于停止位置,而是将其留在您编写的每个IIFE中。< / p>

(function() {
    'use strict';

    // do stuff
})();

是的,它有更多的代码,但是如果你对文件进行gzipping它应该是一个非问题。此外,这将保留您在全局范围之外定义的任何变量,从而产生更高性能的代码。