babel没法编译?

ECMAScript 6(ES6)的发展或者说普及之快能够说是不可思议的,对不少人来讲ECMAScript 5(ES5)都还普及呢。现代浏览器对ES6新特新或多或少的有些支持,但支持度不高,因此要想在浏览器中直接使用ES6的新特性,还得等上一段时间。javascript

ES6的普及起到相当重要的就不得不说babel了。babel能够将ES6代码完美地转换为ES5代码,因此咱们不用等到浏览器的支持就能够在项目中使用ES6的特性。css

对于刚开始使用babel的人,可能会碰到一些问题,由于网上对于babel的使用教程基本上是针对babel 6以前的版本,而babel 6对于以前版本有一些变化。java

  • 由于以前版本只要安装一个babel就能够用了,因此以前的版本包含了一大堆的东西,这也致使了下载一堆没必要要的东西。因此babel 6拆分红两个包:babel-clibabel-core。若是你想要在CLI(终端或REPL)使用babel就下载babel-cli,若是想要在node中使用就下载babel-corenode

  • babel 6已结尽量的模块化了,若是还用babel 6以前的方法转换ES6,它会原样输出,并不会转化,由于须要安装插件。若是你想使用箭头函数,那就得安装箭头函数插件npm install babel-plugin-transform-es2015-arrow-functionses6

下面来实践下(命令行使用babel)。sql

安装babel:

npm install -g babel

命令行转化js文件:npm

babel es6.js

提示:浏览器

The CLI has been moved into the package `babel-cli`. npm install -g babel-cli 

安装babel-clibash

npm install -g babel-cli

再次转化:babel

babel es6.js

命令行输出:

[1, 2, 3].map(x => x * x)

能够看到并无像指望的那样转化为ES5,由于没有安装插件。上面使用了箭头函数,因此要安装箭头函数插件。可是这样太麻烦,若是使用了ES6的其余特性,还要安装其余插件,能够只下载一个插件:

npm install babel-preset-es2015

这个插件包含了其余插件。

安装完插件后,运行:

babel es6.js --presets es2015

输出:

[1, 2, 3].map(function (x) { return x * x; })

上面已经获得想要的结果了。

babel能够将ES6文件转换输出到另外一个文件:

babel es6.js -o es5.js # 或者 babel es6.js --out-file es5.js

也能够用于转换整个目录:

babel -d lib/ src/

运行babel-node命令能够直接在命令行运行ES6代码:

babel-node

> console.log([1,2,3].map(x => x * x)) [ 1, 4, 9 ]

也能够直接运行ES6文件。

babel es6.js

> [1, 2, 3].map(function (x) { return x * x; })

(完)

相关文章
相关标签/搜索