一袋儿腻子粉的故事(转载)
来源:互联网 发布:模拟退火算法实例c 编辑:程序博客网 时间:2024/04/27 16:42
在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别?
1.Shim
一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现.有时候也称为shiv,比如https://github.com/aFarkas/html5shiv
2.Polyfill
在2010年10月份的时候,Remy Sharp在博客上发表了一篇关于术语"polyfill"的文章,一个polyfill是一段代码(或者插件),提供了那些开发者们希望浏览器原生提供支持的功能.
因此,一个polyfill就是一个用在浏览器API上的shim.我们通常的做法是先检查当前浏览器是否支持某个API,如果不支持的话就加载对应的polyfill.然后新旧浏览器就都可以使用这个API了.术语polyfill来自于一个家装产品Polyfilla:
Polyfilla是一个英国产品,在美国称之为Spackling Paste(译者注:刮墙的,在中国称为腻子).记住这一点就行:把旧的浏览器想象成为一面有了裂缝的墙.这些polyfill会帮助我们把这面墙的裂缝抹平,还我们一个更好的光滑的墙壁(浏览器)
3.例子
1. Paul Irish发布过一个Polyfill的总结页面“HTML5 Cross Browser Polyfills”.
2. es5-shim是一个shim,而不是polyfill.因为它是在ECMAScript 3的引擎上实现了ECMAScript 5的新特性,而且在Node.js上和在浏览器上有完全相同的表现(作者的意思是因为它能在Node.js上使用,不光浏览器上,所以它不是polyfill).
3. Respond.js 是一个快速、轻量的 polyfill,用于为 IE6-8 以及其它不支持 CSS3 Media Queries 的浏览器提供媒体查询的 min-width 和 max-width 特性,实现响应式网页设计(Responsive Web Design)。
4.html5shiv主要解决HTML5提出的新的元素不被IE6-8识别,这些新元素不能作为父节点包裹子元素,并且不能应用CSS样式。让CSS 样式应用在未知元素上只需执行 document.createElement(elementName) 即可实现。html5shiv就是根据这个原理创建的。
- 一袋儿腻子粉的故事(转载)
- 腻子粉
- 浏览器的腻子脚本
- 一袋米的耐心
- GitHub的故事(转载)
- Ada的故事(转载)
- HTML5 - 使用polyfill(腻子脚本)填补旧浏览器对html5的支持缺陷
- 佛与蜘蛛的故事(转载)
- 【转载】管道的故事
- [转载]自动控制的故事
- 自动控制的故事--(转载)
- 牛客网--购买苹果,只有6个一袋和8个一袋的
- 转载的,人生的故事
- 皮特的故事(转载)
- 终身受用的四个经典故事(转载)
- 某个软件外包家伙的故事(转载)
- 两兄弟爬楼梯的故事(转载)
- (转载)Hello World 背后的真实故事
- microcom使用方法(包括脚本介绍)
- hdu1166敌兵布阵
- Linux 文件系统剖析
- 关于免费的软件负载均衡器
- WWDC2014,另一个视角看到的
- 一袋儿腻子粉的故事(转载)
- 利用Response.Flush和iframe实现”服务器推”技术(续)
- 机器学习的最佳入门学习资源
- 主宰全球的10大算法
- 初探swift语言的学习笔记一(基本数据类型)
- 支付宝手机网页支付
- 2014.6.2~3逆波兰表达式求值(栈和队列)
- 111
- phpMyAdmin 3.5.8 在 Safari 中白屏问题的解决