Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。

这意味着,你可以现在就用 ES6 编写程序,而不用担心现有环境是否支持。下面是一个例子。

  1. // 转码前
  2. input.map(item => item + 1);
  3.  
  4. // 转码后
  5. input.map(function (item) {
  6. return item + 1;
  7. });

上面的原始代码用了箭头函数,这个特性还没有得到广泛支持,Babel将其转为普通函数,就能在现有的JavaScript环境执行了。

一、配置文件.babelrc

Babel的配置文件是.babelrc,存放在项目的根目录下。使用Babel的第一步,就是配置这个文件。

该文件用来设置转码规则和插件,基本格式如下。

  1. {
  2. "presets": [
  3. "es2015",
  4. "react",
  5. "stage-2"
  6. ],
  7. "plugins": ["transform-object-assign","babel-plugin-transform-runtime"]
  8. }

"plugins": ["transform-object-assign","babel-plugin-transform-runtime"] 这两个插件,

只要"babel-plugin-transform-runtime" 即可它包含了es6基本的新api 和方法的编绎,如promise等,

"transform-object-assign" 是用来单独编绎 Object.assign的 ( let obj = Object.assign({},{a:66,b:88})  Object.assign )

presets字段设定转码规则,官方提供以下的规则集,你可以根据需要安装


  1. # ES2015转码规则
  2. npm install --save-dev babel-preset-es2015
  3. # react转码规则
  4. npm install --save-dev babel-preset-react
  5. # ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
  6. npm install --save-dev babel-preset-stage-0
  7. npm install --save-dev babel-preset-stage-1
  8. npm install --save-dev babel-preset-stage-2
  9. npm install --save-dev babel-preset-stage-3

然后,将这些规则加入.babelrc


  1. {
  2. "presets": [
  3. "es2015",
  4. "react",
  5. "stage-2"
  6. ],
  7. "plugins": []
  8. }

注意,以下所有Babel工具和模块的使用,都必须先写好.babelrc

二、命令行转码babel-cli

Babel提供babel-cli工具,用于命令行转码。

它的安装命令如下。

  1. npm install --global babel-cli

基本用法如下。

  1. # 转码结果输出到标准输出
  2. babel example.js
  3.  
  4. # 转码结果写入一个文件
  5. # --out-file 或 -o 参数指定输出文件
  6. babel example.js --out-file compiled.js
  7. # 或者
  8. babel example.js -o compiled.js
  9.  
  10. # 整个目录转码
  11. # --out-dir 或 -d 参数指定输出目录
  12. babel src --out-dir lib
  13. # 或者
  14. babel src -d lib
  15.  
  16. # -s 参数生成source map文件
  17. babel src -d lib -s

  

上面代码是在全局环境下,进行Babel转码。这意味着,如果项目要运行,全局环境必须有Babel,也就是说项目产生了对环境的依赖。另一方面,这样做也无法支持不同项目使用不同版本的Babel。

一个解决办法是将babel-cli安装在项目之中。
如图比如项目结构如此:

同上先在项目根部 把 .babelrc 文件填好,以下直接粘贴到文件中:

  1. {
  2. "presets": [
  3. "es2015",
  4. "react",
  5. "stage-2"
  6. ],
  7. "plugins": ["transform-object-assign","babel-plugin-transform-runtime"]
  8. }

然后安装babel-cli

  1. # 安装
  2. npm install --save-dev babel-cli
  1. 然后,改写package.json
  1. {
  2. "devDependencies": {
  3. "babel-cli": "^6.26.0",
  4. "babel-plugin-transform-object-assign": "^6.22.0", //同上是用来单独编绎 Object.assign的,可去除
  5. "babel-plugin-transform-runtime": "^6.22.0",
  6. "babel-polyfill": "^6.2.0",
  7. "babel-preset-es2015": "^6.24.1",
  8. "babel-preset-react": "^6.24.1",
  9. "babel-preset-stage-2": "^6.24.1"
  10. },
  11. "scripts": {
  12. "build": "babel src -d lib"
  13. } // src为项目的文件夹   lib为编绎好后要导出到的文件夹
  14. }

下一步--安装依赖

  1. npm install

最后一步--编绎

  1. npm run build

 点击下载demo包

Babel 安装教程的更多相关文章

  1. 最详细eclipse汉化插件安装教程

    最详细eclipse汉化插件安装教程(转) 转自:http://blog.csdn.net/dai_zhenliang/article/details/8588576#t4 教程作者:戴振良 本文与& ...

  2. Eclipse 00: 安装教程 + 汉化 + 简单创建java项目

    Java 安装教程(Eclipse) 目录: 要安装Java 要分两个步骤: 1.JDK的安装 2.Eclipse的安装 3.Eclipse汉化 4.Eclipse创建简单java项目 1和2的顺序不 ...

  3. Linux+apache+mono+asp.net安装教程

    Linux+apache+mono+asp.net安装教程(CentOS上测试的) 一.准备工作: 1.安装linux系统(CentOS,这个就不多讲了) 2.下载所需软件 http-2.4.4.ta ...

  4. Greenplum 源码安装教程 —— 以 CentOS 平台为例

    Greenplum 源码安装教程 作者:Arthur_Qin 禾众 Greenplum 主体以及orca ( 新一代优化器 ) 的代码以可以从 Github 上下载.如果不打算查看代码,想下载编译好的 ...

  5. git 安装教程

    昆,简单说下安装教程1,安装Git2,安装TortoiseGit3,打开第一步安装的git工具GIT BASH

  6. Docker和Docker-compose安装教程以及docker-elk,docker-storm安装教程

    此安装教程仅供我自己安装配置时查看,其他的人不可以偷看!!! 安装Docker 1. Update package information, ensure that APT works with th ...

  7. RHEL 6.3 详细安装教程

    以前刚接触linux时,什么都不懂,为了学习,在电脑上安装双系统(原系统为Win7),吃过不少苦头,在网上搜教程,很多都是语焉不详,导致安装过程中战战兢兢.最近朋友面试运维,面试官有考他对linux安 ...

  8. Android Studio的下载和安装教程(从ADT到AS)

    之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...

  9. mysql快速导出数据库ER图和数据字典(附navicat11安装教程及资源)

    ♣ mysql使用navicat11快速导出数据库ER图 ♣ mysql使用navicat11快速导出数据库数据字典 ♣ navicat11 for mysql (这里是mysql5.7.12)专业版 ...

随机推荐

  1. python matplotlib 播放图片变化过程

    最近想将原图片和处理后的图片放在一起观察图片的变化过程.但是网上并么有找到有用的示例代码,所以粘出来和大家分享一下. import numpy as np import matplotlib.pypl ...

  2. Javascript原型继承容易忽略的错误

    编写Javascript的开发者都知道,JS虽然没有类(ES6添加了class语法),但是可以模拟出OOP语言的类和面向对象的概念,比如我们都知道的一句话,Javascript中处处是对象,而面向对象 ...

  3. 简述java中equals()方法和==的区别

    ==与equals的主要区别是: ==: ==常用于比较原生类型(基本数据类型):byte,short,char,int,long,float,double,boolean,比较的是他们的值. 若用= ...

  4. ubuntu中gdb调试工具的使用

    首先有一段.c代码 1.可调试gcc编译:gcc -g -o xxx xxx.c 2.启动gdb调试 gdb xxx 3.在main函数处设置断点 break main 4.运行程序 run 5.其他 ...

  5. 关于Git的版本问题

    问题的起源 我在IDEA上不小心修改了文件(加了一行空行)并且被保存了,在GitHub Desktop桌面工具上可以看到changes中有修改记录,并且使用命令行git status也可以看到文件的修 ...

  6. Linux系统内存占用90%以上——解决方法

    Linux系统内存占用90%以上--解决方法   首先要明确一个问题:Linux系统内存占用90%以上,是否属于正常范围?网上有详细的解释,这属于正常现象~~~    www.2cto.com   L ...

  7. egametang框架服务端运行流程

    et框架的构建块主要由entity和componet组成,类似unity的组件.一个Entity可以挂载多个不同Component.Entity和Component的共同基类Disposer用于提供对 ...

  8. uva1343 IDA*

    这题需要用数组记录每个block的位置.启发函数:d+wa(8-当前最多相同个数)>maxd直接退出 AC代码: #include<cstdio> #include<cstri ...

  9. BUNOJ 1011

    字符串处理的题.原题链接 AC代码: #include<cstring> #include<cstdio> #include<string> #include< ...

  10. SpringBoot整合SpringSecurity,SESSION 并发管理,同账号只允许登录一次

    重写了UsernamePasswordAuthenticationFilter,里面继承AbstractAuthenticationProcessingFilter,这个类里面的session认证策略 ...