babel 编译器
浏览以下文章:
- 剖析 Babel——Babel 总览 表明了 babel 做了什么事:解析源代码成抽象语法树 -> 转换成新的源代码。
查阅相关资料后,Babel 的功能定位是这样的:
Babel 是一款 JavaScript 编译器 主要用于在旧的浏览器或环境中将 ECMAScript 2015+
代码转换为向后兼容版本的 JavaScript 代码。
相关资源
Support via polyfill 又是什么?
在 Learn ES2015 中,我们可以搜索 Support via polyfill
,可以看到,ES2015 的某些功能特性,是通过 Babel polyfill 进行支持的。
而这些需要通过 Babel polyfill 支持的特性,Creator 官方 2.4 的手册 中写明了,是暂时不支持的。
那么我们将不支持的特性列一列:
- Iterators 迭代器定义的功能
let fibonacci = {
[Symbol.iterator]() {
let pre = 0, cur = 1;
return {
next() {
[pre, cur] = [cur, pre + cur];
return { done: false, value: cur }
}
}
}
}
for (var n of fibonacci) {
// truncate the sequence at 1000
if (n > 1000)
break;
console.log(n);
}
interface IteratorResult {
done: boolean;
value: any;
}
interface Iterator {
next(): IteratorResult;
}
interface Iterable {
[Symbol.iterator](): Iterator
}
- Generators 生成器
var fibonacci = {
[Symbol.iterator]: function*() {
var pre = 0, cur = 1;
for (;;) {
var temp = pre;
pre = cur;
cur += temp;
yield cur;
}
}
}
for (var n of fibonacci) {
// truncate the sequence at 1000
if (n > 1000)
break;
console.log(n);
}
interface Generator extends Iterator {
next(value?: any): IteratorResult;
throw(exception: any);
}
-
In order to support Maps, Sets, WeakMaps, and WeakSets in all environments you must include the Babel polyfill. (从使用的角度看,Creator 是支持这部分内容)
-
Symbols (尚未确定是否支持)
-
Promises (支持)
-
Reflect 反射