首先我们看看这个单词的意思

好像也没有解释啥,但是给人的感觉是一种用来补充,优化的东西。

没错在js中也正有这个意思

js中的polyfill用来表示,根据新特性的定义,创建一段与之行为等价,但是能够在旧的js环境中运行的代码。

简言之,polyfill 是用旧语法重写新版本新增的方法(api),以兼容旧版浏览器。

所以,在之前我们还需要考虑兼容 ie的时候,用es6语法写代码时,会经常用到这个。

polyfill是一个js脚本,我们可以只针对一个方法引入,比如promise引入相应的polyfill,也可以引入一整个文件,一般来说我们会使用现成的npm包,有很多包供我们选择

比如只引入promise的polyfill,可以使用 promise-polyfill

npm i promise-polyfill

常用的还有

npm i babel-polyfill

还有一个babel,是我们常见的做低版本兼容的工具包,babel和polyfill的区别在于

  1. babel只转化新的语法,不负责实现新版本js中新增的api
  2. polyfill 负责实现新版本js中新增的api
  3. 所以在兼容的时候一般是 babel + polyfill都用到,所以babel-polyfill 一步到位

更多关于babel的知识,可以看这篇文章

【前端工程化】babel到底是个什么,了解babel的功能, 了解core-js_我有一棵树的博客-CSDN博客_babel corejsbabel到底是个什么,了解babel的功能https://blog.csdn.net/qq_17335549/article/details/126978888

更多推荐