美文网首页ES6
ES6-Babel转码器

ES6-Babel转码器

作者: 六个周 | 来源:发表于2018-12-06 13:44 被阅读181次
文章总结学习来自于:阮一峰-ECMAScript6入门
1.JavaScriptECMAScript的区别

ECMAScript是JavaScript的规格,JavaScript是ECMAScript的实现。日常场合,这两个词是可以互换的。

2.检查你所在浏览器对ES6的支持情况.

访问 ruanyf.github.io/es-checker

3.配置文件.babelrc

Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行。Babel 的配置文件是.babelrc,存放在项目的根目录下。使用 Babel 的第一步,就是配置这个文件。该文件用来设置转码规则和插件,基本格式如下。(以下所有Babel工具和模块使用,都必须先写好.babelrc)

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

关于bebelrc的理解,建议在用vue-cli搭建好项目后,在根目录下有.babelrc文件,对比package.json进行观摩。

4.命令行转码babel-cli

Babel提供babel-cli工具,用于命令行转码。
安装命令:npm install --save-dev babel-cli

关于npm install (-save)(-save-dev)的参数小小知识点的说明,可参加我的另一篇总结:npm intsall -save 和-save-dev

Babel基本用法:

# 转码结果输出到标准输出
$ 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
5.babel-node

babel-node是在babel-cli的时候带着的,因此安装babel-cli之后,babel-node就不用单独安装了。babel-node命令可以直接运行 ES6 脚本。

6.babel-register

babel-register模块改写require命令,为它加上一个钩子。此后,每当使用require加载.js.jsx.es.es6后缀名的文件,就会先用 Babel进行转码。

$ npm install --save-dev babel-register

使用时,必须首先加载babel-register。

require("babel-register");
require("./index.js");

然后,就不需要手动对index.js转码了。
需要注意的是,babel-register只会对require命令加载的文件转码,而不会对当前文件转码。另外,由于它是实时转码,所以只适合在开发环境使用。

7.babel-core

如果某些代码需要调用 Babel 的 API 进行转码,就要使用babel-core模块。
安装命令如下。

$ npm install babel-core --save

然后,在项目中就可以调用babel-core。

var babel = require('babel-core');

// 字符串转码
babel.transform('code();', options);
// => { code, map, ast }

// 文件转码(异步)
babel.transformFile('filename.js', options, function(err, result) {
  result; // => { code, map, ast }
});

// 文件转码(同步)
babel.transformFileSync('filename.js', options);
// => { code, map, ast }

// Babel AST转码
babel.transformFromAst(ast, code, options);
// => { code, map, ast }

配置对象options,可以参看官方文档http://babeljs.io/docs/usage/options/
下面是一个例子。

var es6Code = 'let x = n => n + 1';
var es5Code = require('babel-core')
  .transform(es6Code, {
    presets: ['latest']
  })
  .code;
// '"use strict";\n\nvar x = function x(n) {\n  return n + 1;\n};'

上面代码中,transform方法的第一个参数是一个字符串,表示需要被转换的 ES6 代码,第二个参数是转换的配置对象。

8.babel-ployfill

Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API,比如Iterator、Generator、Set、Map、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。
举例来说,ES6 在Array对象上新增了Array.from方法。Babel 就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。
安装命令如下。

$ npm install --save babel-polyfill

Babel 默认不转码的 API 非常多,详细清单可以查看babel-plugin-transform-runtime模块的definitions.js文件。

相关文章

  • ES6-Babel转码器

    文章总结学习来自于:阮一峰-ECMAScript6入门 1.JavaScript与ECMAScript的区别 EC...

  • ES6-Babel转码

    欢迎访问我的博客https://qqqww.com/,祝所有码农同胞们早日走上人生巅峰,迎娶白富美~~ 1 部署进...

  • babel 转码器

    Babel介绍 Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环...

  • Babel 转码器

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

  • babel转码器

    npm install--save-dev @babel/core es6=>es5 箭头函数转为普通函数 bab...

  • babel转码器

    cnpm安装插件出现的问题 上面说 object-visit@^1.0.0 不兼容win32位系统,其实是因为 b...

  • Babel 转码器

    Babel[https://babeljs.io/] 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ...

  • ECMAScript 6 入门 作者:阮一峰

    ECMAScript 6 简介 【摘录】es6可以用转码器转码为es5 let和const 【摘录】let用来声明...

  • ES6标准入门0-50页

    1.6 Babel转码器 Babel是一个广为使用的ES6转码器,可以将ES6代码转换为ES5代码,从而在浏览器或...

  • js转化html字符

    /*1.用浏览器内部转换器实现html转码*/ htmlEncode:function (html...

网友评论

    本文标题:ES6-Babel转码器

    本文链接:https://www.haomeiwen.com/subject/grincqtx.html