博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Webpack构建兼容IE8
阅读量:5890 次
发布时间:2019-06-19

本文共 1315 字,大约阅读时间需要 4 分钟。

IE8中运行webpack打包后的程序会出现各种问题,请注意,真的会有各种问题,所以尽可能不要在IE8上运行webpack,连淘宝都不支持IE8了,为什么我们还要兼容它呢?毕竟是十年前的东西了。但是,如果产品经理非要兼容IE8,或者目标用户就是那些用IE8的群体(暴露年龄的东西),讲道理还是可以解决的,只是要多费些脑细胞。

首先要知道IE8 不怎么兼容es5特性,所以要加入es5的compatibility,常用的有:

上述中的respond.min.js是为了给bootstrap( )的栅格布局做兼容,谁让IE8不支持medaiquery呢。

仅仅如此还是不够的,万恶的IE8还不支持__proto__,所以还要写一些小小的兼容代码:

(function() {          var testObject = {};          if (!(Object.setPrototypeOf || testObject.__proto__)) {              var nativeGetPrototypeOf = Object.getPrototypeOf;              Object.getPrototypeOf = function(object) {                  if (object.__proto__) {                      return object.__proto__;                  } else {                      return nativeGetPrototypeOf.call(Object, object);                  }              }          }        })();

终于可以让IE8兼容大部分的es5特性了,但是webpack引入的模块化还是可能导致很多问题,最主要的一个问题就是default。

clipboard.png

//报错来自这里function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

这个问题就是export default 不被IE8支持,注意default是IE8是关键字不能用。网上有一些解决方案:

  1. react 项目的一个ie8兼容性问题 引入es3ify-loader

  2. 使用transform-es2015-modules-simple-commonjs

  3. babel-plugin-transform-es3-property-literals

  4. ...

当然还有很多其他的方案,但是要花耐心去尝试。其实最简单的方式不在代码中使用 export default, 写代码的时候就要充分考虑这个问题。另外,在代码中不能使用default这个关键字,例如:

option['default'](data)

这样的代码在uglify之后就会还是会出现问题,一定不要用default.

转载地址:http://phfsx.baihongyu.com/

你可能感兴趣的文章
Codeforces Round #373 (Div. 2)
查看>>
utf-8-BOM删除bom
查看>>
show/hide
查看>>
DaishaPocedureOfMine(代码)
查看>>
js兼容性处理
查看>>
硬币问题(贪心)
查看>>
Excel数据批量导入到SqlServer的方法
查看>>
JS中的比较
查看>>
POJ 3128 Leonardo's Notebook (置换)
查看>>
linux的一些命令
查看>>
golang iris html/temple
查看>>
根据参数名自动创建参数数组SqlParameter []
查看>>
实验四+138+牟平
查看>>
【flash】浏览器授权
查看>>
内部类
查看>>
MySQL 性能调优的10个方法
查看>>
GCD使用汇总
查看>>
序列!序列!- 零基础入门学习Python016
查看>>
jmp far ptr s所对应的机器码
查看>>
汉诺塔难题
查看>>