ECMAScript前端“黑话”polyfill

Shim和Polyfill

在JavaScript的世界里,有几个词平时被提到,shim和polyfill.它们指的都是如何,又有什么样分别?

一个shim是一个库,它将一个新的API引入到一个旧的条件中,而且仅靠旧环境中已部分手段实现。

一个polyfill就是一个用在浏览器API上的shim.我们平日的做法是先检查当前浏览器是否援助某个API,倘诺不襄助的话就加载对应的polyfill.然后新旧浏览器就都可以采取这些API了.术语polyfill来自于一个家装产品Polyfilla:
Polyfilla是一个英帝国成品,在美利坚合众国叫做Spackling
Paste(译者注:刮墙的,在神州称作腻子).

切记这点就行:把旧的浏览器想象变为一面有了裂缝的墙.这么些[polyfills]会拉扯大家把这面墙的裂缝抹平,还大家一个更好的细腻的墙壁(浏览器)

Paul 艾丽丝(Iris)(Iris)h宣布过一个Polyfills的总计页面“HTML5 Cross Browser
Polyfills”.es5-shim是一个shim(而不是polyfill)的例证,它在ECMAScript
3的发动机上落实了ECMAScript
5的新特色,而且在Node.js上和在浏览器上有完全相同的显现(译者注:因为它能在Node.js上利用,不光浏览器上,所以它不是polyfill).

 

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。
 

前言

Web前端开发这一个日新月异的时日,总是需要阅读一些风靡的英文技术博客来跟上技巧的上进的风尚。而有时候会遇见一些比较频繁的“黑话”,在社区其中或者已经是热门的“共同语言”,而你接触的少就偏偏看不懂。就像现在几乎所有中国人都知情duang是何许事物,可是一个刚学普通话的洋人看到后头可能就一头雾水。

ECMAScript 1

黑话也是要上学的,本文收集各个Web开发的暗语。这里先介绍四个。