作者:刁琼婉 | 来源:互联网 | 2023-07-28 16:14
Shimshim指的是在一个旧的环境中模拟出一个新的API,而且仅靠旧环境中已有的手段,以便所有的浏览器具有相同的行为。主要特征:该API存在于现代浏览器中;浏览器有各自的API或
Shim
shim指的是在一个旧的环境中模拟出一个新的API,而且仅靠旧环境中已有的手段,以便所有的浏览器具有相同的行为。主要特征:
- 该API存在于现代浏览器中;
- 浏览器有各自的API或可通过别的API实现;
- API的所有方法都被重新实现;
- 拦截API调用,并提供自己的实现
- 是一个优雅降级
Polyfill
polyfill是一个段代码(或者插件),提供了那些开发者们希望浏览器原声提供支持的功能。程序库先检查浏览器是否支持某个API,如果不支持则加载对应的polyfill。主要特征:
- 是浏览器API的Shim;
- 与浏览器有关
- 没有提供新的API,只是在API中实现缺少的功能
- 以只需要引入polyfill,它会静静地工作
shim的概念要比polyfill更大一些,可以将polyfill理解为专门浏览器API的shim。简单的说,如果浏览器X支持标准规定的功能,那么polyfill可以让浏览器Y的行为与浏览器X一样