shim和polyfill有什么区别?
为什么80%的码农都做不了架构师?>>>
在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别?
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有什么区别?相关推荐
- shim和polyfill的区别,重点是Polyfill的作用和使用
在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别? 一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手 ...
- shim和polyfill的区别,重点是Polyfill的作用和使用。
在JavaScript的世界里,有两个词经常被提到,shim和polyfill.它们指的都是什么,又有什么区别? 一个shim是一个库,它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手 ...
- 【概念集锦】之 shim和polyfill
shim 是一个小的类库(lib),提供独立的API,以弥补人们在不同的环境下使用原生语言需要考虑兼容性的问题. 比如:使用js原生Ajax操作时,你用 XMLHttpRequest 创建xhr对象, ...
- 前端“黑话”polyfill
前言 在Web前端开发这个日新月异的时代,总是需要阅读一些最新的英文技术博客来跟上技术的发展的潮流.而有时候会遇到一些比较高频的"黑话",在社区里面可能已经是人人皆知的" ...
- polyfill了解吗?
[问]polyfill了解吗? [答]:Polyfill是指给旧浏览器提供向后兼容的新特性,比如让旧版IE,也支持object.assign方法等.和此相关的概念还有shim, 是指抽象出一层API来 ...
- 【译】《Understanding ECMAScript6》- 第八章-Module
目录 模块是什么 使用基础 接口标识符重命名 缺省接口 Re-exporting 非绑定import 总结 JavaScript令人困惑并且易引发错误的特性之一是以"一切皆共享"的 ...
- 50种响应式web设计的奇妙工具
在您开始着手响应式站点的搭建之前,如果能拥有强有力的开发工具会让您的世界另有一番风采.本文中Denise Javobs和Peter Gasston推荐了50种强大的工具来支持您建造响应式站点的过程. ...
- Angular2知识概括
Angular2知识概括 Angular版本更迭 angular2入门 Angular2架构 Angular 2 模板语法 脚手架cli 路由Router UI库 Angular2入门之模块与组件 R ...
- AngularJS2.0 quick start——其和typescript结合需要额外依赖
AngularJS2 发布于2016年9月份,它是基于ES6来开发的. 运行条件! 由于目前各种环境(浏览器或 Node)暂不支持ES6的代码,所以需要一些shim和polyfill(IE需要)让ES ...
最新文章
- unix系统编程小结(二)------文件和目录
- NServiceBus的安装与调试
- linux cat EOF 变量自动解析问题
- matlab中if语句的用法_if语句的基本用法
- 十一级指针实现百万qq号的增删查改以及排序写入
- CRM学习笔记(一)
- java线程基础_Java多线程基础
- 融麒RP3200 4G全网通公网集群对讲机
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- 雪球python爬虫炒股_关于雪的作文
- python航空订票系统_航空订票系统
- codeforces 129C - Statues 图论 DFS
- mod函数计算机,Excel中mod函数的使用方法
- 一种点到特定高维平面的距离的优化算法
- 简单概括 文明进化的各个阶段 (39)
- chrome 查看日志
- 3 什么是linux磁盘分区,3. Linux系统磁盘分区介绍
- 赛效:如何在线给图片加水印
- latex 中手写l的输入方法
- 运维开发工程师的必备技能总结
热门文章
- ApiPost报TypeError: Cannot read property ‘oauth‘ of undefined的解决方案
- 接口测试--apipost解决传递json参数时字符串包含有@和/的问题
- Python 了解 bytes 与 str 的区别
- 如何做好Web 安全测试
- mysql慢查询的使用_mysql慢查询使用详解
- 08-10 性能瓶颈证据链
- 01-09 Linux三剑客-awk
- jquery解析php json,使用jQuery解析PHP Json对象.
- ef mysql不显示所有表_mysql中显示当前数据库下的所有表,包括视图。
- 【Java】反射、枚举、Lambda表达式