Use es2015 with babel in ie8

最近在用webpack+babel+es2015来写一个react项目,主体部分不需要兼容ie8,写的非常爽。主要部分做的差不多了之后,剩下的一个部分需要兼容ie8,然后问题就来了。

babel默认转换出来的代码,在ie8下不行,主要原因有下面这些:

  • Object.defineProperty等 需要profil。使用babel-polyfill就可以了。
  • 关键字在ie8不能用作属性名。
    Foo.default; //报错,需要写成Foo['default'] var foo = {default:1};//报错,需要写成var foo = {'default':1}; //使用这两个插件进行转换 //"transform-es3-member-expression-literals", //"transform-es3-property-literals"

本以为这样就ok了,结果还是不行。这两个插件没法转换这种情况。
import foo from './foo'; var a = foo.a; // output var _foo = require('./foo'); var _foo2 = _interopRequireDefault(_foo); var a = _foo2.default.a;
default 仍然是直接作为了属性名,ie8依然报错。
这个问题需要用es3ify-loader,来解决。
以为到这里应该就没问题了,结果还是不行,Flux也不支持ie8。。
我还得再改。。

题外话,react0.15就不再支持ie8,Flux也不支持ie8,讲真,需要支持ie8的项目还是不建议用React了。

最后自己写了个插件,解决这个问题。

你可能感兴趣的:(Use es2015 with babel in ie8)