前端“黑话”polyfill

前言

Web前端支付这多少个日新月异的一代,总是需要阅读一些最新的英文技术博客来跟上技术的迈入的风尚。而有时候会遇见有的相比较频繁的“黑话”,在社区中间或者已经是抢手的“共同语言”,而你接触的少就偏偏看不懂。就像现在几乎所有中国人都领悟duang是什么事物,然而一个刚学粤语的外国人看到后头可能就一头雾水。

图片 1

黑话也是要读书的,本文收集各样Web开发的暗语。那里先介绍多少个。

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 艾丽丝(Iris)h公布过一个Polyfills的下结论页面“HTML5 Cross Browser
Polyfills”.es5-shim是一个shim(而不是polyfill)的事例,它在ECMAScript
3的引擎上贯彻了ECMAScript
5的新特点,而且在Node.js上和在浏览器上有完全相同的表现(译者注:因为它能在Node.js上拔取,不光浏览器上,所以它不是polyfill).

 

相关文章