移動端兼容性問題

vivo手機低版本瀏覽器內核js執行報錯

babel-polyfill

babel-polyfill在應用中會模擬一個es2015+的環境,所以使用了babel-polyfill後可以使用內置對象如Promise和WeakMap,靜態方法如Array.from和Object.assign,實例方法如Array.prototype.includes,以及generator函數(需要提供babel-plugin-transform-regenerator插件)。總的來說,polyfill修改了全局作用域,瀏覽器下是window,node下是global。

babel-polyfill主要由兩部分組成,core-js和regenerator runtime。

core-js:提供瞭如ES5、ES6、ES7等規範中 中新定義的各種對象、方法的模擬實現。
regenerator:提供generator支持,如果應用代碼中用到generator、async函數的話用到。

引入babel-polyfill全量包後文件會變得非常大。
https://babeljs.io/docs/en/babel-polyfill/

babel-plugin-transform-runtime

babel-plugin-transform-runtime主要做了一下三件事:

當你使用 generators/async 函數時,自動引入 babel-runtime/regenerator (使用 regenerator 運行時而不會污染當前環境) 。
自動引入 babel-runtime/core-js 並映射 ES6 靜態方法和內置插件(實現polyfill的功能且無全局污染,但是實例方法無法正常使用,如 “foobar”.includes(“foo”) )。
移除內聯的 Babel helper 並使用模塊 babel-runtime/helpers 代替(提取babel轉換語法的代碼
https://babeljs.io/docs/en/babel-plugin-transform-runtime

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章