|
阅读:6996回复:0
node中使用babel的相关分享
什么是Babel
相信很多新手没有听说过Babel和ES6,如果你是老手的话,那么请自动忽略~ ES6 ES6也就是ECMAScript 6,也就是最新的一代js规范,添加了很多语言的特性,包括模块管理,类,块级作用域等等内容。我最喜欢的就是箭头函数,优雅~ Babel 然而虽然ES6很棒,但是现在几乎没有浏览器或者Node(我记得5.0已经全部支持了es6,可是为啥我试着却不行。。。似乎要开启全部的harmony)能够完全支持es6的代码,那么问题来了,如果我想体验一下es6的代码,怎么办?? 一个很简单的思路便是: 我写个程序,将es6代码转换成es5代码进行运行不就好了,很棒 而Babel就是干的这个事情。 babel5 和 babel6 的区别 对于Babel来说,现在有了两个版本,一个是5,一个是6,那么两者有什么区别呢?
就是因为babel6整体插件化了,如果你想使用es6语法,需要手动加载相关插件。 这里有一篇文章,建议看一下《The Six Things You Need To Know About Babel 6》 Quick Start 建立空文件夹 babel6 建立空文件夹babel6作为本次的目录,并npm init 安装Babel6 npm install babel-core --save 如果觉得慢,可以使用淘宝镜像cnpm。 此时,基础的babel6就安装完成了,如果你想安装babel5,那么执行如下的代码 npm install babel@5 --save 即可使用babel5,那么在后文的中,统一使用babel6 require hook 安装好之后,问题来了,如何使用呢? 相信使用过coffee的人一定知道register,那么在babel中同样不例外,也可以使用同样的方法。 require('babel-core/register'); require('./app'); 大家可能以为这样我就可以在app.js中优雅的使用es6了,在babel5中确实是这样的,但是在babel6中,缺不一样了。 如果你这样写完,并没有任何作用,因为你缺少一个插件。 安装插件 如果想使用es6语法,必须安装一个插件 npm install babel-preset-es2015 然后在文件夹下面创建一个叫.babelrc的文件,并写入如下代码: { "presets": ["es2015"] } 下面你就可以很优雅的书写你的es6代码了。 内容解释 .babelrc 什么是.babelrc文件呢?熟悉linux的同学一定知道,rc结尾的文件通常代表运行时自动加载的文件,配置等等的,类似bashrc,zshrc。同样babelrc在这里也是有同样的作用的,而且在babel6中,这个文件必不可少。
这个是babel6新加的,就是代表需要启动什么样的预设转码,在babel6中,预设了6种,分别是
CLI 其实babel也可以当做全局变量来使用的 npm install babel-cli -g 安装上后,会安装如下四个程序到全局环境中:
这个就是编译js文件的全局变量,具体如何使用,大家请参照官网。使用方法和coffee,style,less了类似,就不多讲了 babel-node 这里主要说一下这个东西,就是这个的作用就是提供一个node命令相同的REPL环境,不过这个环境会在执行之前讲代码进行编译。 坑1:上文讲到,babel6默认是无法编译es6文件的,需要你手动安装es2015的preset,同样,全局模式下,也需要这个preset。那么问题来了,我们怎么安装这个preset呢?global?所以这是一个坑,我在babel的issue中找到这样的一条。作者给出这样的回答:我们处理preset和plugin是依据于输入的文件,而你直接运行CLI是没有输入文件的,也就无法定位preset和plugin的位置。言下之意就是不要全局安装,虽然我们给你了你全局安装的方式。然后作者关闭了issue,表示很无奈。。。。 所以,如果大家想体验一下es6的REPL的话,建议安装babel5 npm install babel@5 -g babel-doctor 就是检查babel状况的, 主要检查以下几个内容
就是讲一些公共的帮助函数提取成一个文件,其实就做了这一个作用。。。 原文:http://cnodejs.org/topic/56460e0d89b4b49902e7fbd3 |
|