为什么80%的码农都做不了架构师?>>>   

在JavaScript的世界里,有两个词经常被提到,shimpolyfill.它们指的都是什么,又有什么区别?

1.Shim

一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现.

译者注:有时候也称为shiv,比如https://github.com/aFarkas/html5shiv

2.Polyfill

在2010年10月份的时候,Remy Sharp在博客上发表了一篇关于术语"polyfill"的文章,

一个polyfill是一段代码(或者插件),提供了那些开发者们希望浏览器原生提供支持的功能.

因此,一个polyfill就是一个用在浏览器API上的shim.我们通常的做法是先检查当前浏览器是否支持某个API,如果不支持的话就加载对应的polyfill.然后新旧浏览器就都可以使用这个API了.术语polyfill来自于一个家装产品Polyfilla:

Polyfilla是一个英国产品,在美国称之为Spackling Paste(译者注:刮墙的,在中国称为腻子).记住这一点就行:把旧的浏览器想象成为一面有了裂缝的墙.这些[polyfills]会帮助我们把这面墙的裂缝抹平,还我们一个更好的光滑的墙壁(浏览器)

3.例子

Paul Irish发布过一个Polyfills的总结页面“HTML5 Cross Browser Polyfills”.es5-shim是一个shim(而不是polyfill)的例子,它在ECMAScript 3的引擎上实现了ECMAScript 5的新特性,而且在Node.js上和在浏览器上有完全相同的表现(译者注:因为它能在Node.js上使用,不光浏览器上,所以它不是polyfill).

英文原文:http://www.2ality.com/2011/12/shim-vs-polyfill.html

转载于:https://my.oschina.net/i33/blog/173925

shim和polyfill有什么区别?相关推荐

  1. shim和polyfill的区别,重点是Polyfill的作用和使用

    在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别? 一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手 ...

  2. shim和polyfill的区别,重点是Polyfill的作用和使用。

    在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别? 一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手 ...

  3. 【概念集锦】之 shim和polyfill

    shim 是一个小的类库(lib),提供独立的API,以弥补人们在不同的环境下使用原生语言需要考虑兼容性的问题. 比如:使用js原生Ajax操作时,你用 XMLHttpRequest 创建xhr对象, ...

  4. 前端“黑话”polyfill

    前言 在Web前端开发这个日新月异的时代,总是需要阅读一些最新的英文技术博客来跟上技术的发展的潮流.而有时候会遇到一些比较高频的"黑话",在社区里面可能已经是人人皆知的" ...

  5. polyfill了解吗?

    [问]polyfill了解吗? [答]:Polyfill是指给旧浏览器提供向后兼容的新特性,比如让旧版IE,也支持object.assign方法等.和此相关的概念还有shim, 是指抽象出一层API来 ...

  6. 【译】《Understanding ECMAScript6》- 第八章-Module

    目录 模块是什么 使用基础 接口标识符重命名 缺省接口 Re-exporting 非绑定import 总结 JavaScript令人困惑并且易引发错误的特性之一是以"一切皆共享"的 ...

  7. 50种响应式web设计的奇妙工具

    在您开始着手响应式站点的搭建之前,如果能拥有强有力的开发工具会让您的世界另有一番风采.本文中Denise Javobs和Peter Gasston推荐了50种强大的工具来支持您建造响应式站点的过程. ...

  8. Angular2知识概括

    Angular2知识概括 Angular版本更迭 angular2入门 Angular2架构 Angular 2 模板语法 脚手架cli 路由Router UI库 Angular2入门之模块与组件 R ...

  9. AngularJS2.0 quick start——其和typescript结合需要额外依赖

    AngularJS2 发布于2016年9月份,它是基于ES6来开发的. 运行条件! 由于目前各种环境(浏览器或 Node)暂不支持ES6的代码,所以需要一些shim和polyfill(IE需要)让ES ...

最新文章

  1. unix系统编程小结(二)------文件和目录
  2. NServiceBus的安装与调试
  3. linux cat EOF 变量自动解析问题
  4. matlab中if语句的用法_if语句的基本用法
  5. 十一级指针实现百万qq号的增删查改以及排序写入
  6. CRM学习笔记(一)
  7. java线程基础_Java多线程基础
  8. 融麒RP3200 4G全网通公网集群对讲机
  9. DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
  10. 雪球python爬虫炒股_关于雪的作文
  11. python航空订票系统_航空订票系统
  12. codeforces 129C - Statues 图论 DFS
  13. mod函数计算机,Excel中mod函数的使用方法
  14. 一种点到特定高维平面的距离的优化算法
  15. 简单概括 文明进化的各个阶段 (39)
  16. chrome 查看日志
  17. 3 什么是linux磁盘分区,3. Linux系统磁盘分区介绍
  18. 赛效:如何在线给图片加水印
  19. latex 中手写l的输入方法
  20. 运维开发工程师的必备技能总结

热门文章

  1. ApiPost报TypeError: Cannot read property ‘oauth‘ of undefined的解决方案
  2. 接口测试--apipost解决传递json参数时字符串包含有@和/的问题
  3. Python 了解 bytes 与 str 的区别
  4. 如何做好Web 安全测试
  5. mysql慢查询的使用_mysql慢查询使用详解
  6. 08-10 性能瓶颈证据链
  7. 01-09 Linux三剑客-awk
  8. jquery解析php json,使用jQuery解析PHP Json对象.
  9. ef mysql不显示所有表_mysql中显示当前数据库下的所有表,包括视图。
  10. 【Java】反射、枚举、Lambda表达式