一分钟入门 Babel(下一代 JavaScript 语法的编译器)

Jacquelyn38
• 阅读 1546

一分钟入门 Babel(下一代 JavaScript 语法的编译器)简单来说把 JavaScript 中 es2015/2016/2017/2046 的新语法转化为 es5,让低端运行环境(如浏览器和 node )能够认识并执行。严格来说,babel 也可以转化为更低的规范。但以目前情况来说,es5 规范已经足以覆盖绝大部分浏览器,因此常规来说转到 es5 是一个安全且流行的做法。

ES6转ES5(第一种)

初始化项目
npm init --y  
安装依赖
npm install babel-cli -D  
npm install babel-preset-es2015 -D  
在项目中创建并编辑ES6文件

这里只是使用es6的语法举下例子,看下能否转译成es5语法。我们假设取名index.js,放在项目根目录的src文件夹里。

// src/index.js  
let a = 1;  

let fun = ()=>{  
    console.log(a);  
}  
编辑package.json

我们需要自己在scripts字段里添加命令:

  • build-t :单独编译某个文件

  • build-d:把一个文件夹内的所有文件统一编译到另一个文件夹里(文件夹自动生成,不需要自己创建)

  • build-o:把一个文件夹内的指定文件编译到另外的文件夹里(文件夹需要自己创建,可以指定文件名)

{  
  "name": "babel01",  
  "version": "1.0.0",  
  "description": "",  
  "main": "index.js",  
  "scripts": {  
    "build-t":"babel index.js --presets es2015",  
    "build-d": "babel src -d lib --presets es2015",  
    "build-o":"babel src/index.js -o dist/index.js --presets es2015"  
  },  
  "keywords": [],  
  "author": "",  
  "license": "ISC",  
  "devDependencies": {  
    "babel-cli": "^6.26.0",  
    "babel-preset-es2015": "^6.24.1"  
  }  
}  
启动编译
npm run <这里是scripts字段的命令>  

下面是编译后的es5文件。

"use strict";  

var a = 1;  

var fun = function fun() {  
    console.log(a);  
};  

ES6转ES5(第二种)

其实跟第一种差不多。

初始化项目
npm init --y  
安装依赖
npm install babel-cli -D  
`npm install babel-preset-es2015 -D  
`
在项目中创建并编辑ES6文件

这里只是使用es6的语法举下例子,看下能否转译成es5语法。我们假设取名index.js,放在项目根目录的src文件夹里。

// src/index.js  
let a = 1;  

let fun = ()=>{  
    console.log(a);  
}  
在项目中创建并编辑.babelrc文件

在根目录下创建.babelrc文件。

{  
    "presets": ["es2015"],  
    "plugins": []  
}  
编辑package.json

我们需要自己在scripts字段里添加命令,命令内容与第一种方法的一样,这里只不过省了--presets es2015

{  
  "name": "babel01",  
  "version": "1.0.0",  
  "description": "",  
  "main": "index.js",  
  "scripts": {  
  "build":"babel src/index.js -o dist/index.js"  
  },  
  "keywords": [],  
  "author": "",  
  "license": "ISC",  
  "devDependencies": {  
    "babel-cli": "^6.26.0",  
    "babel-preset-es2015": "^6.24.1"  
  }  
}  
启动编译
npm run build  

下面是编译后的es5文件。

"use strict";  

var a = 1;  

var fun = function fun() {  
    console.log(a);  
};  

ES6+转ES5

这里 ES6+ 说的是ES6、ES7、ES8等。

初始化项目
npm init --y  
安装依赖
npm install babel-cli -D  

npm install babel-preset-env -D


##### 在项目中创建并编辑ES6文件

这里只是使用es6的语法举下例子,看下能否转译成es5语法。我们假设取名`index.js`,放在项目根目录的src文件夹里。

// src/index.js
let a = 1;

let fun = ()=>{
console.log(a);
}


##### 在项目中创建并编辑.babelrc文件

在根目录下创建`.babelrc`文件。

{ "presets": ["env"]
}


##### 编辑package.json

命令内容不只是这一个,根据你需求写,其他命令可以看上面的**ES6转ES5(第一种)**。

{ "name": "babel01",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "babel src -d dist"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1"
}
}


##### 启动编译

npm run build


下面是编译后的es5文件。

"use strict";

var a = 1;

var fun = function fun() {
console.log(a);
};

```

结语

本篇主要介绍了ES6转ES5的两种方法以及ES6+怎样转ES5。不过现在大部分使用ES6+怎样转ES5比较多,主要让大家体验下升级的感觉。如果觉得不错,麻烦关注下俺的公众号哦,会不定时发放前端电子书以及学习进阶视频。


作者:Vam的金豆之路

主要领域:前端开发

我的微信:maomin9761

微信公众号:前端历劫之路

一分钟入门 Babel(下一代 JavaScript 语法的编译器)


本文转转自微信公众号前端历劫之路原创https://mp.weixin.qq.com/s/Hp_J6RkrwKuYBpHcIjBcLA,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
typescript类 继承 修饰符
//1、ts中类的定义/es5:functionPerson(name){this.namename;this.runfunction(){
Stella981 Stella981
3年前
ES6 系列之 Babel 是如何编译 Class 的(上)
_摘要:_ 前言在了解Babel是如何编译class前,我们先看看ES6的class和ES5的构造函数是如何对应的。毕竟,ES6的class可以看作一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。constructorES6中:\
Stella981 Stella981
3年前
ES6 系列之 Babel 是如何编译 Class 的(下)
_摘要:_ 前言在上一篇\《ES6系列Babel是如何编译Class的(上)》\(https://github.com/mqyqingfeng/Blog/issues/105),我们知道了Babel是如何编译Class的,这篇我们学习Babel是如何用ES5实现Class的继承。ES5寄生组合式继承\
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Stella981 Stella981
3年前
Babel总结
什么是babel?babel是一个JavaScript编译器。Babel是一个工具链,主要用于将ECMAScript2015代码转换为向后兼容的旧浏览器或环境中JavaScript版本。注解:传统的编译是指转化成可执行的代码,也就是二进制代码。但是对于前端来说,因为JS是解释性语言,对于浏览器或者Node来说就是可执行的代码。
Stella981 Stella981
3年前
Babel是如何读懂JS代码的
本文转载自:安秦 https://zhuanlan.zhihu.com/p/27289600概述稍微了解行业现状的开发者都知道,现在前端“ES6即正义”,然而浏览器的支持还是进行时。所以我们会用一个神奇的工具将ES6都给转换成目前支持比较广泛的ES5语法。对,说的就是Babel。本文不再介绍Babel是什么也不讲怎么用,这类
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这