fre + webpack4 + babel7 兼容 IE(IE8+. Not IE7)
yarn add webpack-ie8-plugin -D
constIE8=require('webpack-ie8-plugin')plugins:[ ...newIE8()// 配置文件引入 webpack 的 polyfill]import'fre/ie'// 业务入口引入 fre 的 polyfill
目前主流前端框架都不支持 ie,react16 已经不可能支持 ie8 了,vue 更是想都别想
然而 ie8+ 在国内仍有很高的占有率
fre 代码量非常小,没有用到几个高级 API,所以兼容起来十分简单
webpack 最新版本自身不支持 ie8,所以我们要打补丁,幸运的是,webpack4 高级 API 也不多
Object.defineproperty
、Object.create
、Function.bind
Array.forEach
、Array.isArray
、Array.some
、Performance.now
以上是 fre 用到的高级 API,也需要打补丁,幸好也不多
重写 createTextNode 为x-text
,然后将 textContent 改为innerText
主要是对 addEventListener 和 removeEventListener 的模拟
由于 ie8 并不支持 webSocket(webpack 是 eventSource),所以基本上所有的通信插件都用不了
fre2 重构会适当照顾到兼容,达到一个极佳的平衡,然后会放到主库里维护