JavaScriptPolyfillShim 在JavaScript中Shim和Polyfill有什么区别?

Posted 三寸蜡笔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScriptPolyfillShim 在JavaScript中Shim和Polyfill有什么区别?相关的知识,希望对你有一定的参考价值。

javascript的世界里,有两个词经常被提到,那就是Shim和Polyfill,它们指的都是什么,又有什么区别?在本文中,将简短的给大家介绍他们之间的联系和区别。
Shim

一个shim就是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现,Shim有时候也称为shiv,比如著名的html5兼容库html5shiv,Github地址:https://github.com/aFarkas/html5shiv。


Polyfill

在2010年10月份的时候,Remy Sharp在博客上发表了一篇关于术语”polyfill”的文章,一个polyfill是一段代码(或者插件),提供了那些开发者们希望浏览器原生提供支持的功能。

因此一个polyfill就是一个用在浏览器API上的shim,我们通常的做法是先检查当前浏览器是否支持某个API,如果不支持的话就加载对应的polyfill,然后新旧浏览器就都可以使用这个API了,术语polyfill来自于一个家装产品Polyfilla

Polyfilla是一个英国产品,在美国称之为Spackling Paste(译者注:刮墙的,在中国称为腻子),记住这一点就行:把旧的浏览器想象成为一面有了裂缝的墙,这些polyfill会帮助我们把这面墙的裂缝抹平,还我们一个更好的光滑的墙壁(浏览器)















以上是关于JavaScriptPolyfillShim 在JavaScript中Shim和Polyfill有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 j 在 (++i || ++j) 中不递增

P4744 Iron man

关于j = j++在循环中执行的问题

序列递推——cf1204E

hdu-1176(dp)

为啥在 Log4j2 上使用 Slf4j 时 log4j-slf4j-impl 不依赖于 log4j-core