首先我们看看这个单词的意思
好像也没有解释啥,但是给人的感觉是一种用来补充,优化的东西。
没错在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的区别在于
- babel只转化新的语法,不负责实现新版本js中新增的api
- polyfill 负责实现新版本js中新增的api
- 所以在兼容的时候一般是 babel + polyfill都用到,所以babel-polyfill 一步到位
更多关于babel的知识,可以看这篇文章
【前端工程化】babel到底是个什么,了解babel的功能, 了解core-js_我有一棵树的博客-CSDN博客_babel corejsbabel到底是个什么,了解babel的功能https://blog.csdn.net/qq_17335549/article/details/126978888