前端“黑话”polyfill

前言

Web前端开发这个突飞猛进的时代,老是须要阅读一些最新的英文技术博客来跟上技术的发展的潮流。而有时候会遇到一些比较高频的黑话,在社区里面可能已是人人皆知的共同语言,而你接触的少就恰恰看不懂。就像如今几乎全部中国人都知道duang是什么东西,可是一个刚学中文的外国人看到之后可能就一头雾水。



黑话也是要学习的,本文收集各类Web开发的黑话。这里先介绍两个。html

Polyfill

Polyfill或者Polyfiller,是英国Web开发者 Remy Sharp 在咖啡店蹲坑的时候拍脑壳造出来的。当时他想用一个词来形容"用JavaScript(或者Flash之类的什么鬼)来实现一些浏览器不支持的原生API"。Shim这个已经有的词汇第一时间出如今他的脑海里。可是他回头想了一下Shim通常有本身的API,而不是单纯实现原生不支持的API。苦思冥想一直想不到合适的单词,因而他一怒之下造了一个单词Polyfill。除了他本身用这个词之外,他还给其余开发者用。随着他在各类Web会议演讲和他写的书《Introducing HTML5》中频繁提到这个词,你们用了都以为很好,就一块儿来用。

Polyfill的准确意思为:用于实现浏览器并不支持的原生API的代码。

例如,querySelectorAll是不少现代浏览器都支持的原生Web API,可是有些古老的浏览器并不支持,那么假设有人写了库,只要用了这个库, 你就能够在古老的浏览器里面使用document.querySelectorAll,使用方法跟现代浏览器原生API无异。那么这个库就能够称为Polyfill或者Polyfiller。
好,那么问题就来了。jQuery是否是一个Polyfill?答案是No。由于它并非实现一些标准的原生API,而是封装了本身API。一个Polyfill是抹平新老浏览器 标准原生API 之间的差距的一种封装,而不是实现本身的API。
已有的一些Polyfill,如 Polymer 是让旧的浏览器也能用上 HTML5 Web Component 的一个Polyfill。FlashCanvas是用Flash实现的可让不支持Canvas API的浏览器也能用上Canvas的Polyfill。
 前端

Shim和Polyfill

在JavaScript的世界里,有两个词常常被提到,shim和polyfill.它们指的都是什么,又有什么区别?

一个shim是一个库,它将一个新的API引入到一个旧的环境中,并且仅靠旧环境中已有的手段实现

一个polyfill就是一个用在浏览器API上的shim.咱们一般的作法是先检查当前浏览器是否支持某个API,若是不支持的话就加载对应的polyfill.而后新旧浏览器就均可以使用这个API了.术语polyfill来自于一个家装产品Polyfilla:
Polyfilla是一个英国产品,在美国称之为Spackling Paste(译者注:刮墙的,在中国称为腻子).

记住这一点就行:把旧的浏览器想象成为一面有了裂缝的墙.这些[polyfills]会帮助咱们把这面墙的裂缝抹平,还咱们一个更好的光滑的墙壁(浏览器)

Paul Irish发布过一个Polyfills的总结页面“HTML5 Cross Browser Polyfills”.es5-shim是一个shim(而不是polyfill)的例子,它在ECMAScript 3的引擎上实现了ECMAScript 5的新特性,并且在Node.js上和在浏览器上有彻底相同的表现(译者注:由于它能在Node.js上使用,不光浏览器上,因此它不是polyfill).html5

相关文章
相关标签/搜索