Babel编译es6

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

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

// 转码前
input.map(item => item + 1);

// 转码后
input.map(function (item) {
  return item + 1;
});

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

一、配置文件.babelrc

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

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

{
  "presets": [],
  "plugins": []
}

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

# ES2015转码规则
$ npm install --save-dev babel-preset-es2015

# react转码规则
$ npm install --save-dev babel-preset-react

# ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
$ npm install --save-dev babel-preset-stage-0
$ npm install --save-dev babel-preset-stage-1
$ npm install --save-dev babel-preset-stage-2
$ npm install --save-dev babel-preset-stage-3

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

二、命令行转码babel-cli

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

它的安装命令如下。

$ npm install --global babel-cli

基本用法如下。

# 转码结果输出到标准输出
$ babel example.js

# 转码结果写入一个文件
# --out-file 或 -o 参数指定输出文件
$ babel example.js --out-file compiled.js
# 或者
$ babel example.js -o compiled.js

# 整个目录转码
# --out-dir 或 -d 参数指定输出目录
$ babel src --out-dir lib
# 或者
$ babel src -d lib

# -s 参数生成source map文件
$ babel src -d lib -s

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

一个解决办法是将babel-cli安装在项目之中。

# 安装
$ npm install --save-dev babel-cli

然后,改写package.json

{
  // ...
  "devDependencies": {
    "babel-cli": "^6.0.0"
  },
  "scripts": {
    "build": "babel src -d lib"
  },
}

转码的时候,就执行下面的命令。

$ npm run build

三、babel-polyfill插件

Babel 默认只转换新的 JavaScript语句(syntax),而不转换新的 API ,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign)都不会转码。Babel 默认不转码的 API 非常多。

为了完整使用 ES6 的 API ,我们只能安装这个插件:

$ npm install -save-dev babel-polyfill

然后,在需要使用的文件的顶部引入

import "babel-polyfill"

node.js中

require("babel-polyfill")

webpack.config.js中

module.exports={
        entry:["babel-polyfill","./app/js"]
}
时间: 2024-12-20 23:46:21

Babel编译es6的相关文章

使用babel编译es6

起因:开发中慢慢的学习使用es6,但是JavaScript需要浏览器来解析,而不是所有浏览器都支持es6,所以为了兼容es6,需要第三方工具进行编译es6. 工具:node,gulp,gulp-babel,babel-preset-es2015. 备注:只介绍基于node,gulp下的babel编译es6.node安装请自行网搜.npm转淘宝镜像cnpm请自行网搜. 开始:创建项目文件夹:打开命令行工具:右键开始菜单--运行--输入cmd--回车. 1:检验node是否安装成功:输入    (有

在IDEA(phpStorm)中使用Babel编译ES6

安装Babel 官方文档建议我们根据单个项目进行本地安装,原因是不同的项目可以依赖不同版本的 Babel,使你的项目更方便移植.更易于安装. 在项目的根目录下使用命令行工具(CMD等)执行下面代码 npm install --save-dev babel-cli 安装编译规则 官方提供了几套预设的规则集,分别适用于 ES2015.React 和 ES7 的一些实验性特性.我们可以根据需要安装(如果只需要学习 ES6 语法的话,就只选 ES2015 好了). # ES2015转码规则 npm in

Webpack 4 学习06(使用babel编译ES6)

目前,ES6(ES2015)这样的语法已经得到很大规模的应用,它具有更加简洁.功能更加强大的特点,实际项目中很可能会使用采用了ES6语法的模块,但浏览器对于ES6语法的支持并不完善.为了实现兼容,就需要使用转换工具对ES6语法转换为ES5语法,babel就是最常用的一个工具 babel转化语法所需依赖项: babel-loader: 负责 es6语法转化 babel-core: babel核心包 babel-preset-env:告诉babel使用哪种转码规则进行文件处理 安装依赖 npm in

webstorm 配置node babel编译es6

es6 babel编译

本文主要参照阮一峰的es6入门,为提高自己写了一份随笔. 原文地址请戳这里  ECMAScript 6 入门 ECMAScript 6是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 但是目前浏览器对es6不完全兼容,需要借住babel编译. Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行. node 安装babel : $ npm install --save-dev babe

利用babel自动编译es6文件

一.检查File-Watchers中Babel的Arguments,有一项presets的设置,把他更改为=es2015,详细设置如下: $FilePathRelativeToProjectRoot$ --out-dir dist --source-maps --presets=es2015 二.把JavaScript language version改成ECMAScript 6: 安装base后,增加base的watch IDE会出现一个File watcher提示条 先别点Add watch

KoaHub.js可借助 Babel 编译稳定运行在 Node.js 环境上

koahubjs KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async & Await)等特性,借助 Babel 编译,可稳定运行在 Node.js 环境上. 介绍 KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async &am

gulp 编译es6 react 教程 案例 配置

1.gulp基本配置: var gulp = require('gulp'), watch = require('gulp-watch'), babel = require('gulp-babel'); var browserify = require('gulp-browserify'); var SourceMap = require('gulp-sourcemaps'); var SourceMapSupport = require('gulp-sourcemaps-support');

gulp 编译es6 探究

1.gulp配置: var gulp = require('gulp') var fs = require("fs") var babelify = require('babelify') var browserify = require('browserify') var rename=require('gulp-rename') var uglifyjs = require('gulp-uglifyjs') gulp.task('es2015', () => { browse