前言

Web前端开发这个日新月异的时代,总是需要阅读一些最新的英文技术博客来跟上技术的发展的潮流。而有时候会遇到一些比较高频的“黑话”,在社区里面可能已经是人人皆知的“共同语言”,而你接触的少就偏偏看不懂。就像现在几乎所有中国人都知道duang是什么东西,但是一个刚学中文的外国人看到以后可能就一头雾水。

黑话也是要学习的,本文收集各种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 Irish发布过一个Polyfills的总结页面“HTML5 Cross Browser Polyfills”.es5-shim是一个shim(而不是polyfill)的例子,它在ECMAScript 3的引擎上实现了ECMAScript 5的新特性,而且在Node.js上和在浏览器上有完全相同的表现(译者注:因为它能在Node.js上使用,不光浏览器上,所以它不是polyfill).

 

最新文章

  1. dom 的介绍
  2. KMP学习之旅
  3. SharePoint Server 2013开发之旅(一):新的开发平台和典型开发场景介绍
  4. using关键字背后的故事!
  5. C# 类型基础——你可能忽略的技术细节
  6. pycharm简单使用
  7. c#基础学习汇总----------继承
  8. &lt和&gt
  9. 理解javascript之 对象
  10. CI Weekly #13 | 用更 Geek 的方式配置你的 CI 工作流
  11. 分布式系统监视zabbix讲解五之web监控--技术流ken
  12. IIS中注册.net4.0
  13. Python备份MySQL数据库【转】
  14. GEC6818交叉开发环境搭建拟稿
  15. ENC28J60学习笔记——第1部分
  16. 微信整合的时候 出现这个“redirect_uri 参数错误”
  17. MinGW安装教程——著名C/C++编译器GCC的Windows版本
  18. [js常用]将秒转化为时分秒
  19. android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1(zz)
  20. Shell脚本编写1

热门文章

  1. 多个Img标签之间的间隙处理方法
  2. JavaScript 中的变量命名方法
  3. C# WinForm 技巧:COMBOBOX搜索提示
  4. idea14教程
  5. 通过 adb命令发送广播
  6. <meta http-equiv = "X-UA-Compatible" cotent = "IE=edge,chrome=1"/>
  7. 单点登录sso规范
  8. JavaScript数组的学习
  9. QT下int与QByteArray的转换
  10. Linux内核中常见内存分配函数(三)
  11. 使用PreListener与InteractionListener的一个小发现
  12. 球谐光照(Spherical Harmonics Lighting)及其应用-应用篇
  13. Wireshark使用介绍(一):Wireshark基本用法
  14. 高性能mysql的事物隔离级别
  15. java遍历Map
  16. windows安装mysql数据库并修改密码
  17. Nexus3忘记admin密码时的解决办法
  18. Double-check idiom for lazy initialization of instance fields
  19. 关于clearfix和clear的讨论
  20. ubuntu下boot分区空间不足问题的解决方案