我们现在大多数人用的语法javascript其实版本是ecmscript5,也是就es5。这个版本己经很多年了,且完美被各大浏览器所支持。所以很多学js的朋友可以一直分不清楚es5和javscript的关系.javascript是一门编程语言,那么它就会有版本,es5还是es6就就是它的版本号。最新版es7己经在紧锣密布的进行中,它最新的语法会让我们写代码更新的行云流水。
节点本身已经支持部分ES6语法,但是进口出口,以及异步等待(8节点已经支持)等一些语法,我们还是无法使用。为了能使用这些新特性,我们就需要使用巴贝尔把ES6转成ES5语法
npm安装babel-cli - g
& lt; !——更多的在
巴别塔的配置文件是.babelrc
{ “预设”:[] }
新建一个演示文件夹,文件夹下新建js
1.const arr=(1、2、3); 加勒比海盗。地图(项=比;项+ 1);
同时新建.babelrc配置文件
{ “预设”:[] }
终端运行
巴别塔1。js - o dist.js
可以看的见,在文件夹下,新建了一个。js,这就是巴别塔转码后的文件
但是,dist.js目前是没有任何变化的,因为我们在配置文件里面没有声明转码规则,所以巴别塔无法转码
安装转码插件
npm安装——save-dev babel-preset-es2015 babel-preset-stage-0
修改配置文件
{ “预设”:( “es2015”, “0阶段” ] }
es2015可以转码es2015的语法规则,0阶段可以转码ES7语法(比如异步等待)
再次运行终端
巴别塔1。js - o dist.js
可以看的见,箭头函数被转码了
var arr=(1、2、3); 加勒比海盗。地图(函数(项){ 返回项+ 1; });
我们试下异步等待
异步函数开始(){ 常量数据=https://www.yisu.com/zixun/await测试(); console.log(数据); } 功能测试(){ 返回新的承诺((解决,拒绝)=> { 解决(“好”); }) }
转码后的文件
使用严格的; var开始=function () { var _ref=_asyncToGenerator (/* # __PURE__ */regeneratorRuntime。马克(函数_callee () { var数据; regeneratorRuntime返回。包装(函数_callee $ (_context) { 而(1){ 开关(_context。prev=_context.next) { 例0: _context。下一个=2; 回归测试(); 案例2: 数据=https://www.yisu.com/zixun/_context.sent; console.log(数据); 案例4: 案例'end”: 返回_context.stop (); } } },_callee); })); 返回函数开始(){ _ref返回。应用(这个参数); }; }(); 函数_asyncToGenerator (fn){返回函数(){var创=fn。应用(这个参数);拒绝返回新的承诺(函数(解决)(关键参数){{功能一步尝试{var信息=创(例子)(arg);var值=https://www.yisu.com/zixun/info.value;}捕捉(错误){拒绝(错误);返回;}如果(info.done){解决(价值);其他}{返回Promise.resolve(值)。然后(函数(值){步骤(“下一个”,价值);},函数(err){步骤(“扔”,错);});}}返回步骤(“下一个”);});};} 功能测试(){ 返回新的承诺(函数(解决,拒绝){ 解决(“好”); }); }
再试下进出口
util.js
出口的默认函数表示(){ console.log (' 2333 '); }js 1.
从“进口说。/util '; 说();1.
这次,要把js和util.js都转码,我们可以把整个文件夹转码
巴别塔演示- d dist
新生成的dist文件夹下,就有转码后的文件。可以看的见,转码后,仍然使用的是module.exportsCMD模块加载
<强> babel-preset-env
强>
上面的转码其实有个缺陷,就是巴别塔会默认把所有的代码转成es5,这意味着,即使节点支持让关键字,转码后,也会被转成var