shim 和 polyfill 的区别

作者:赵金添 分类: 前端 发布于:2016-1-7 17:47 ė1542次浏览 60条评论
参考:
http://www.cnblogs.com/ziyunfei/archive/2012/09/17/2688829.html
http://www.2ality.com/2011/12/shim-vs-polyfill.html
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills


1.Shim
一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现.
注:有时候也称为shiv,比如https://github.com/aFarkas/html5shiv


2.Polyfill
在2010年10月份的时候,Remy Sharp在博客上发表了一篇关于术语"polyfill"的文章,一个polyfill是一段代码(或者插件),提供了那些开发者们希望浏览器原生提供支持的功能.
因此,一个polyfill就是一个用在浏览器API上的shim.我们通常的做法是先检查当前浏览器是否支持某个API,如果不支持的话就加载对应的polyfill.然后新旧浏览器就都可以使用这个API了.


3.例子
1. Paul Irish发布过一个Polyfill的总结页面“HTML5 Cross Browser Polyfills”.
2. es5-shim是一个shim,而不是polyfill.因为它是在ECMAScript 3的引擎上实现了ECMAScript 5的新特性,而且在Node.js上和在浏览器上有完全相同的表现(译者注:作者的意思是因为它能在Node.js上使用,不光浏览器上,所以它不是polyfill).

本文出自 赵金添的前端博客@福州软件外包公司,转载时请注明出处及相应链接。

0
分享本文至:

发表评论

电子邮件地址不会被公开。必填项已用*标注


Ɣ回顶部