在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别?
- 一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现
- 一个polyfill就是一个用在浏览器API上的shim
- 我们通常的做法是先检查当前浏览器是否支持某个API,如果不支持的话就加载对应的polyfill.然后新旧浏览器就都可以使用这个API了
- 例如,IE浏览器,不支持ES6的promise,就可以在项目中引入Promise 的polyfill:es6-promise