說明
玩轉 webpack 學習筆記
babel-polyfill 打包後體積占比大
babel-polyfill 打包後體積:88.49k,占比 29.6%
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yMzMzN5czYmNGZyIDZ1kDMzYzXwEDN1cDM3IzLchDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
Promise 的浏覽器支援情況
比如:promise 可以打開網址https://caniuse.com/檢視
建構體積優化:動态 Polyfill
方案 | 優點 | 缺點 | 是否采用 |
babel-polyfill | React 16 官方推薦 | 1、包體積200k+,難以單獨抽離Map、Set。2、項目裡 react 是單獨引用的 cdn,如果要用它需要單獨建構一份放 react 前加載 | ❌ |
babel-plugin-transform-runtime | 能隻 polyfilI 用到的類或方法,相對體積較小 | 不能 polyfill 原型上的方法,不适用于業務項目的複雜開發環境 | ❌ |
自己寫 Map、Set 的 polyfill | 定制化高、體積小 | 1、重複造輪子,容易在日後年久失修成為坑;2、即使體積小,依然所有使用者都要加載 | ❌ |
polyfill-service | 隻給使用者傳回需要的 polyfill,社群維護 | 部分國内奇葩浏覽器 UA 可能無法識别(但可以使用降級傳回所需全部 polyfill) | ✔️ |
Polyfill Service原理
通路頁面,發送請求,識别 User Agent,然後下發不同的 Polyfill
如何使用動态 Polyfill service
polyfill.io
官方提供的服務
基于官方自建 polyfill 服務
我們可以打開:https://polyfill.io/v3/polyfill.min.js
在谷歌浏覽器打開的時候,傳回如下:
在 iphoone 5/se 的情況下傳回如下: