前言

在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).

转载于:https://www.cnblogs.com/shsxt/p/8277618.html

前端“黑话”polyfill相关推荐

  1. 编程环境中Runtime(运行时)的三个含义

    编程环境中Runtime(运行时)的三个含义 转自:https://www.zhihu.com/question/20607178 知乎答主@doodlewind 三个含义 实际上编程语境中的 run ...

  2. 学前端开发是一种什么样的体验?

    web前端教程 用大白话,来讲编程 嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化.听说你是这里对新技术最了解的 Web 开发工程 ...

  3. web前端基础知识查漏补缺,JavaScript面试题,赶紧收藏

    1介绍js的基本数据类型 js一共六种基本数据类型,分别是 undefined null boolean number string ,还有es6新增的symbol 和 es10新增的bigint. ...

  4. 前端资源整理 - 订阅、工具等

    取自 我的GITHUB 的 fe-store-house repo,欢迎 PR,欢迎 STAR.原 repo 不定期更新,此文可能断更. 断更了一年多,重新更新一下,似乎 sfgg 的文章渲染中 gf ...

  5. 从零学web前端_从零到前端英雄(第2部分)

    从零学web前端 This article is part two of the "From Zero to Front-end Hero" series. In part one ...

  6. [转] 2016前端开发技术巡礼

    2016年马上过去了,像过去六年中的每一年一样,Web前端领域又产生了"面目全非"而又"耳目一新"的变化,不但旧事物持续不断地被淘汰,新事物也难保坐久江山,大有 ...

  7. vue商品列表滚动效果_如何处理前端超长列表

    点击上方蓝字关注我们 背景:系统中有一个添加品牌的搜索框,当搜索类目不做限制的时候,全部的品牌列表会有1W多个,这时候在框架的加持下,操作速度感人.可以在https://codesandbox.io/ ...

  8. 前端如何转换 schema 和 xml

    最近开发遇到一种场景: 1.转换 xml 字符串到 schema ( json 对象) 2.或者转换 json 对象到 xml 字符串 在 nodejs 中已经有成熟的第三方库: xml2js htt ...

  9. 转载:2016前端开发技术巡礼

    本文转自前端之巅,作者殷勇. 2016年马上过去了,像过去六年中的每一年一样,Web前端领域又产生了"面目全非"而又"耳目一新"的变化,不但旧事物持续不断地被淘 ...

最新文章

  1. 火爆全网!《算法刷题宝典》资源,免费下载!(含代码数据)
  2. 实现 strStr()
  3. win7优化设置_win7优化性能的操作步骤
  4. 某些专题页面内容很好,但很长时间都不被及时收录的可能原因之一
  5. 【USACO1.2】【Luogu1206】回文平方数 Palindromic Squares(枚举,构造函数,进制)
  6. ELK在广告系统监控中的应用 及 Elasticsearch简介
  7. html水平垂直居中
  8. mac电脑如何设置开机启动项
  9. IoT中的高音质音频设计
  10. 3.1 电磁干扰EMI
  11. [luoguT30208]太极剑
  12. Contour 学习笔记(一):使用 Contour 接管 Kubernetes 的南北流量
  13. Javascript中LenB的计算(ASP)
  14. 计算机论文致谢词范文500字,2021年论文致谢词范文500字(通用5篇)
  15. RTT(往返时间)和RPC
  16. Android运行ListView的代码,Android ListView组件详解及示例代码
  17. PAT 乙级 1100 校庆
  18. 《MATLAB语音信号分析与合成(第二版)》:第8章 基音周期的估算方法
  19. 单片机16个灯四种花样c语言,基于Proteus的MSP430单片机仿真实例5-16个花样灯控制...
  20. 软件功能介绍之(数据维护)3.1数据编辑(1)

热门文章

  1. 关于常用meta的总结
  2. ONOS系统架构演进,实现高可用性解决方案
  3. atitit.表单验证 的dsl 本质跟 easyui ligerui比较
  4. 绝对震撼 7款HTML5动画应用及源码
  5. 用最简单的方法判断一个LONG整形的数A是2^n(2的n次方)
  6. 使用PM2搭建在线vue.js开发环境(以守护进程方式热启动)
  7. HierarchicalBeanFactory
  8. 激光炸弹(BZOJ1218)
  9. 手把手教你用1行代码实现人脸识别 -- Python Face_recognition
  10. 使用python matplotlib画图