使用 gulp-uglify 打包出来后, art-template 在IE8-就不能用了, 直接报模板错误.加上 mangle: false 就可以用
但mangle: false相当于没有混淆变量名, 只要使用简单的格式化就能像阅读源码一样看打包后的代码了.
所以我打算研究下,既要mangle,也要ie7
我将原版3.1.0的template.min.js与我们压缩后的template.js, 进行 格式化-diff软件 找不同, 发现一个比较显著的差异: 我们打包出来的,会把写在后面的函数声明,提到最前面.于是辗转找到了hoist_funs 参数
研究出来了开启mangle在IE7下也不报错的办法:
1,compress.hoist_funs=false,表示打包时不自动将函数声明提升到作用域顶部。配置这个之后设置mangle=true,打包出来的tempalte.js已经可用
2,mangle.reserved:这里用来定义打乱时不动的变量名。因为第一步打包出来的代码,会导致validate插件在IE8-报“缺少对象”。尝试了几次后确定了这个方法
加上这个参数的坏处是,代码里的 $ 就变得很显眼了
1 | .pipe(uglify({ |
更简单的办法
uglify({ie8: true}) // uglify-js 3.0+