Babel:Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码。
注意:Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API。
Polyfill:Polyfill的准确意思为,用于实现浏览器并不支持的原生API的代码。
1 //使用babel转码前的代码 2 require('babel-polyfill'); 3 (x => x * 2)(1); 4 var b = Array.of(1,2,4); 5 //使用babel转码后的代码 6 'use strict'; 7 8 require('babel-polyfill'); 9 (function (x) { 10 return x * 2; 11 })(1); 12 var b = Array.of(1, 2, 4);
Babel转换了ES6的箭头函数句法,但对于Array.of并没有转换,因为Array.of是ES6的API。
Array是ES5就存在的一个对象了,但是该对象没有of方法,这个方法就是一个API,但ES6有这个API了。对于不支持ES6的浏览器,我们通过引入babel-polyfill使其支持ES6的API,类似于上面的代码来实现的。