es6-compact-table 名词备忘
网址:http://kangax.github.io/compat-table/es6
网站收录了各编译器对es6及其后版本的支持度,其中我对以下几个并不了解所为何物
Traceur
Babel 6 + core-js
Babel 7 + core-js 2
Babel 7 + core-js 3
Closure 2018.11
Type-Script + core-js 2
Type-Script + core-js 3
es6-shim
Konq 4.14
Echo JS
XS6
JXA
Node >=6.5 <7
Node >=8.10 <9
Node >=10.13 <11
DUK 1.8
DUK 2.2
JJS 1.8
JJS 10
GraalVM 1.0
Traceur
Traceur 是一个来自 Google 的 Javascript 编译器,通过它可以体验一些很新并且有趣的 Javascript 语言特性,这些多数是还没有被当前浏览器实现的 ECMAScript 标准或草案,比如:数组比较、类、模块、迭代器、方法参数默认值、Promise等。介绍说明
Traceur 和 Babel 对比:与 Babel 功能基本相同,都提供了把新的 js 语言特性转化功能,依照文章开头的网站显示,Traceur 比较老牌, 所支持的新特性要少一些。
code-js
开源库 zloirock/core-js
提供了es5、es6 的 polyfills,包括promises、symbols、collections、iterators、typed arrays、ECMAScript 7+ proposals、setImmediate 等等。
如果使用了 babel-runtime、babel-plugin-transform-runtime 或者 babel-polyfill,你就间接的引入了 core-js 标准库
有关于 core-js 2 与 3 有何区别,见 Changelog,core-js 3 主要是扩充了 Map,Set,Symbol 以及其他对象的方法,加入了 URL 对象。
Babel 6 和 Babel 7 的区别
相比前一版本,Babel 6最大的变化是更模块化,各种内置库都被分散到独立的模块;其次,让所有插件可选,这意味着Babel默认不会编译ES2015代码,并且所有的transformer完全独立;同时,为了减少配置的复杂性,引入了preset;最后,提升了性能。
- Babel 6 引入了preset的概念,preset其实是一组plugins。
- 我们常用的babel-preset-es2015包括了完整的ES2015特性,引入它即可编译ES2015代码到ES5。
Babel 7 正式发布了(2018-06-20是@babel/core@^7.0.0-beta.51),相比 6 有非常多的更新,这里例举一些主要的,详情可以阅读官方博文。
- deprecated Yearly Presets (如 babel-preset-es20xx),preset-env 代替
- 最新更新的 TC39 Proposals
- 重命名,@babel scope (防止被占用)
es6-shim
Shim 通常是一个代码库,它给旧环境(并不一定特指浏览器环境)带来的往往是全新的 api,而且这些 api 只能在这个环境当中运行。
Polyfill 就是一系列的代码或者插件,它为开发者提供的技术特性,都是希望浏览器本就应该原生支持的,并且抹平了 api 之间的使用差异。
并且从文章最顶部的网站来看, es6-shim 的支持度很低。