当前位置: 首页 > Web前端 > HTML5

前端“黑话”polyfill

时间:2023-04-05 19:27:24 HTML5

前言Web前端开发时代,总是需要阅读一些最新的英文技术博客,紧跟技术发展的潮流。而有时候你会遇到一些比较高频的“黑词”,可能已经是社区中众所周知的“通用语”,但如果接触不多,根本看不懂。就像现在几乎所有的中国人都知道duang是什么,但是刚学中文的老外看了可能会一头雾水。黑话也是要学的。本文收集各种Web开发黑话。这里先介绍两个。PolyfillPolyfill,即Polyfiller,是由英国网络开发者RemySharp在咖啡店闲逛时创建的。当时他想用一个词来形容“用JavaScript(或者Flash之类的鬼东西)来实现一些浏览器不支持的原生API”。沉,一个已经存在的词,立刻出现在了他的脑海中。但他回过头来想了想。Shim通常有自己的API,而不是简单地实现原生不支持的API。他苦思冥想,想不出合适的词,一怒之下造了一个词Polyfill。除了自己使用这个术语外,他还对其他开发人员使用它。由于他在各种Web会议演讲和他的书《Introducing HTML5》中经常提到这个词,大家都用过,觉得很好,所以就一起用了。Polyfill的确切含义是:用于实现浏览器不支持的原生API的代码。例如,querySelectorAll是许多现代浏览器都支持的原生WebAPI,但一些古老的浏览器不支持它。然后假设有人写了一个库。只要你使用这个库,你就可以在古浏览器中使用文档。querySelectorAll,使用方法与现代浏览器的原生API无异。那么这个库可以叫做Polyfill或者Polyfiller。OK,那么问题来了。jQuery是一个Polyfill吗?答案是否定的。因为它没有实现一些标准的原生API,而是封装了自己的API。Polyfill是一种封装,它弥合了新旧浏览器标准原生API之间的差距,而不是实现您自己的API。一些现有的Polyfill,例如Polymer,是一种允许旧浏览器使用HTML5WebComponents的Polyfill。FlashCanvas是在Flash中实现的,所以不支持CanvasAPI的浏览器也可以使用Canvas的Polyfill。Shim和Polyfill在JavaScript的世界里,有两个词经常被提及,shim和polyfill。它们指的是什么,有什么区别?shim是一个将新API引入旧API的库。环境,并且只能通过旧环境中已经可用的方式。polyfill是在浏览器API上使用的垫片。我们通常的做法是检查当前浏览器是否支持某个API,如果不支持则加载相应的polyfill。那么新旧浏览器都可以使用这个API。polyfill这个词来源于一个家装产品Polyfilla:Polyfilla是英国的产品,在美国叫SpacklingPaste(译者注:刮墙,国内叫putty).请记住这一点:把旧浏览器想象成一堵有裂缝的墙。这些[polyfills]将帮助我们抚平这堵墙的裂缝并给我们一个更好的平滑墙(浏览器)PaulIrish发布了Polyfills的摘要页面“HTM??L5CrossBrowserPolyfills”。es5-shim是一个shim的例子(而不是而不是polyfill),它在ECMAScript3引擎之上实现了ECMAScript5的新特性,并且在Node.js上的行为与在浏览器中的行为完全相同(译者注:因为它可以在Node.js上使用,而不是仅在浏览器上,因此它不是polyfill)。