UglifyJS'使用严格'声明

Rom*_*pak 9 javascript uglifyjs bundling-and-minification gruntjs

我正在使用Grunt连接grunt-contrib-uglify任务来缩小我的应用程序中的JavaScript.

在缩小时,它会删除'use strict'除第一个之外的所有语句,因此我将获得一个巨大的JavaScript文件,顶部带有"use strict"指令.

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

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

小智 7

如果你用IIFE包装所有脚本,那么它grunt-contrib-uglify不会将该语句定位到停止位置,而是将它留在你编写的每个IIFE中.

(function() {
    'use strict';

    // do stuff
})();
Run Code Online (Sandbox Code Playgroud)

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