webpack优化篇(五十):使用动态 Polyfill 服务

Posted 凯小默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack优化篇(五十):使用动态 Polyfill 服务相关的知识,希望对你有一定的参考价值。

说明

玩转 webpack 学习笔记

babel-polyfill 打包后体积占比大

babel-polyfill 打包后体积:88.49k,占比 29.6%

Promise 的浏览器支持情况

比如:promise 可以打开网址https://caniuse.com/查看

构建体积优化:动态 Polyfill

方案优点缺点是否采用
babel-polyfillReact 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 的情况下返回如下:

Polyfill service 问题

比如:国内的浏览器魔改会导致识别 User Agent 出现问题,这种情况可以降级使用全部返回的。

以上是关于webpack优化篇(五十):使用动态 Polyfill 服务的主要内容,如果未能解决你的问题,请参考以下文章

webpack原理篇(五十五):webpack流程:准备阶段

webpack原理篇(五十一):webpack启动过程分析

webpack原理篇(五十四):Tapable是如何和webpack进行关联起来的?

webpack原理篇(五十六):webpack流程:模块构建和chunk生成阶段

webpack原理篇(五十二):webpack-cli源码阅读

webpack原理篇(五十八):实战开发一个简易的webpack