[软技能] 第113天 shim和polyfill有什么区别?它们分别有什么用?
Opened this issue · 4 comments
haizhilin2013 commented
第113天 shim和polyfill有什么区别?它们分别有什么用?
HCLQ commented
首先 polyfill是shim的一种.目的都是在没有相关API的环境上顺利执行代码
区别是:
shim:是js库, 用库定义的api去执行一些操作, 如jquery,$.ajax,底层用ActiveXObject或XMLHttpRequest实现,用户不直接用标准API,而是用库定义的api,具体环境判断和实现交给库.
polyfill: 用js模拟标准api,抹平环境差异,用户仍是使用标准api
如发现window.requestAnimationFrame不存在,polyfill会用setTimeout覆写window.requestAnimationFrame
polyfill的好处在于,可以动态监测浏览器版本,低版本加载,而在高本版浏览器可以不加载这段js,用户代码不修改直接可用
shim则是无论浏览器版本都要加载这段js,因为用的api是库定义的
hsiaosiyuan0 commented
gousern commented
bozaigao commented
polyfill作为js修补库是shim中的一种,主要用于处理不同浏览器对js的兼容性问题;
shim就跟 jQuery的 $.ajax 一样,主要磨平不同平台的差异性,提供一致对外的接口调用;