如何让webpack模块化代码兼容到ie8

 
 

需求:网站的所有页面都要跑一个脚本,由于这个脚本的功能有很多,所以考虑使用webpack将其中的每个功能模块化。使用webpack,就自然想到用es6爽一爽吧。为了兼容尽可能多的浏览器,当然坑也一个一个的冒了出来。

经过babel编译的代码,在chrome上当然没问题。但是用ie8打开,控制台报错。

第一个错,是转出来一个default,被ie8判错,于是在看过知乎上的一个讨论之后,增加了postloader,大意是babel把代码从es6转成es5, 我们再用es3ify把代码从es5转成es3....

        loaders: [
            
            ....
            
        ],
        postLoaders: [
          {
            test: /\.js$/,
            loaders: ['es3ify-loader']
          }
        ]

然后我们又发现,有个错误叫做 Object.defineProperty ,于是安装babel-preset-es2015-loose, 在webpack上js的loaders配置成:

           {
                test: /\.js$/,
                loader: 'babel-loader',
                
                query: {
                  presets: ['es2015-loose']
                }
                
            }

然后我们的命令行上会报很多错,错到你怀疑自己是不是脑袋有问题。但最后居然编译成功了。
然后打开ie8,可以结束今天的工作了。

如果你发现某些es5的方法不存在es3里,那么可以在这里找一找。找到后引入到项目内即可。

此外,有一篇阿里UED的文章,没有解决这个问题(因为没使用loose),但提供了非常好的分析思路,值得学习。



作者:stois
链接:https://www.jianshu.com/p/52fb48dd7a9b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值