Shim
一个Shim是一个库,它将一个新的API放入旧的环境中,依靠旧环境中已有的手段实现。
主要特征:
- 改API存在于现代浏览器中;
- 浏览器有各自的API或可通过别的API实现;
Polyfill
一个polyfill是一段代码(或者插件),提供了哪些开发者希望浏览器原生提供支持的功能。程序库会先检查浏览器是否支持某个API,如果不支持就加载对应的polyfill。
主要特征:
- 是一个浏览器API的Shim;
- 和浏览器有关;
- 没有提供新的API,只是在API中实现缺少的功能;
Shim的概念要比polyfill更广泛一些,可以理解为polyfill是专门兼容浏览器的shim。