最近在用webpack+babel+es2015來寫一個(gè)react項(xiàng)目,主體部分不需要兼容ie8,寫的非常爽。主要部分做的差不多了之后堡僻,剩下的一個(gè)部分需要兼容ie8,然后問題就來了疫剃。
babel默認(rèn)轉(zhuǎn)換出來的代碼钉疫,在ie8下不行,主要原因有下面這些:
- Object.defineProperty等 需要profil巢价。使用babel-polyfill就可以了牲阁。
- 關(guān)鍵字在ie8不能用作屬性名。
Foo.default; //報(bào)錯(cuò)壤躲,需要寫成Foo['default'] var foo = {default:1};//報(bào)錯(cuò)城菊,需要寫成var foo = {'default':1}; //使用這兩個(gè)插件進(jìn)行轉(zhuǎn)換 //"transform-es3-member-expression-literals", //"transform-es3-property-literals"
本以為這樣就ok了,結(jié)果還是不行碉克。這兩個(gè)插件沒法轉(zhuǎn)換這種情況凌唬。
import foo from './foo'; var a = foo.a; // output var _foo = require('./foo'); var _foo2 = _interopRequireDefault(_foo); var a = _foo2.default.a;
default 仍然是直接作為了屬性名,ie8依然報(bào)錯(cuò)漏麦。
這個(gè)問題需要用es3ify-loader客税,來解決。
以為到這里應(yīng)該就沒問題了撕贞,結(jié)果還是不行更耻,F(xiàn)lux也不支持ie8。麻掸。
我還得再改酥夭。。
題外話脊奋,react0.15就不再支持ie8熬北,F(xiàn)lux也不支持ie8,講真诚隙,需要支持ie8的項(xiàng)目還是不建議用React了讶隐。
最后自己寫了個(gè)插件,解決這個(gè)問題久又。