资讯专栏INFORMATION COLUMN

babel——下一代 JavaScript 语法的编译器

JeOam / 1924人阅读

摘要:写在前面环境是默认支持的,但我们需要使用来满足我们使用新特性的需求。以下内容为了不让项目产生环境依赖,没有使用全局安装的方式。这里举一个使用的例子现在想使用的,我们需要先安装和然后配置文件此时就可以用对转码了。脚本中打开的命令如下

</>复制代码

  1. 写在前面:Node 环境是默认支持 ECMAScript6 的,但我们需要使用 babel 来满足我们使用新特性的需求。

    以下内容为了不让项目产生环境依赖,没有使用全局安装的方式。你可以新建一个文件夹,在其内部执行。

浏览器环境

</>复制代码

  1. babel 6 开始不再支持浏览器环境, 如果你使用的是 babel 6+ , 那么你需要以构建工具, 这里仅使用 babel 5

终端运行一下命令安装 babel:

</>复制代码

  1. npm install babel-core@5

mac中, 将以下路径js文件引入 html 中:

</>复制代码

  1. node-modules/babel-core/browser.js

</>复制代码

  1. Babel <span class="hljs-keyword">in</span> Browser
node环境

node 环境本身是支持 ES6 的, 不过它提供了把 ES6 的代码转换为 ES5 的方法:
在项目目录中执行:

</>复制代码

  1. # ES2015转码规则
  2. npm install --save-dev babel-preset-2015
  3. # react转码规则
  4. $ npm install --save-dev babel-preset-react
  5. # ES7不同阶段语法提案的转码规则(0 表示完全支持)
  6. $ npm install --save-dev babel-preset-stage-0

然后在项目根目录下创建.babelrc 文件:

</>复制代码

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

这个文件很重要,添加插件都有编辑这个文件。

还可以用一个钩子关联.ES6 .es .jsx .js文件

</>复制代码

  1. npm install --save-dev babel-register

方法是在入口脚步头部加入:

</>复制代码

  1. require("babel-register");

当然以上方法不会对 ES6 特有的类、对象、方法进行转换, 如果需要应安装 babel-polyfill 模块:

</>复制代码

  1. npm install babel-polyfill --save

并在所有脚步头部加入:

</>复制代码

  1. require("babel-polyfill");
  2. //or
  3. import "babel-polyfill";
命令行环境

在项目目录中执行:

</>复制代码

  1. npm install --save-dev babel-cli

之后继续执行以下代码就进入 ES6 的 REPL 环境, 可以直接运行 ES6 代码:

</>复制代码

  1. babel-node

如果执行 js 文件, 可以:

</>复制代码

  1. babel-node ES6Node.js

还有一下命令把 ES6 代码转换为 ES5 代码:

</>复制代码

  1. # 转换为 ES5 并输出代码
  2. babel ES6.js
  3. # 转换 ES6.js 并输出到指定文件
  4. babel ES6.js -o ES5.js
  5. # 转换整个文件夹中的 ES6 代码文件到 ES5
  6. babel -d build-dir source-dir
  7. # 转换整个文件夹中的 ES6 代码文件到 ES5, 并生成 source.map
  8. babel -d build-dir source-dir -s

此外还有 babel 的在线转码器:https://babeljs.io/repl

JS 文件内

之前已经安装了 babel-core 就可以在 JS 文件内使用 babel:

</>复制代码

  1. var babel = require("babel-core");
  2. // 字符串转码
  3. babel.transform("code();", options);
  4. // => { code, map, ast }
  5. // 文件转码(异步)
  6. babel.transformFile("filename.js", options, function(err, result) {
  7. result; // => { code, map, ast }
  8. });
  9. // 文件转码(同步)
  10. babel.transformFileSync("filename.js", options);
  11. // => { code, map, ast }
  12. // Babel AST转码
  13. babel.transformFromAst(ast, code, options);
  14. // => { code, map, ast }

之后可以直接用以下代码转码:

</>复制代码

  1. var ES6Code = "let x = n => n + 1";
  2. var ES5Code = require("babel-core").transform(ES6Code, {
  3. "presets": ["es2015"]
  4. }).code;

得到如下代码:

</>复制代码

  1. `"use strict";
  2. var x = function x(n){
  3. return n + 1;
  4. };`

配置对象options,可以参看官方文档http://babeljs.io/docs/usage/options/。

这里举一个使用的例子:
现在想使用 babel 的 Decorator,我们需要先安装 babel-core 和 babel-plugin-transform-decorators

</>复制代码

  1. npm install babel-core babel-plugin-transform-decorators

然后配置 .babelrc 文件:

</>复制代码

  1. {
  2. plugins: ["transform-decorators"]
  3. }

此时就可以用 babel 对 Decorator 转码了。
脚本中打开的命令如下:

</>复制代码

  1. babel.transfrom("code", {plugins: ["transform-decorators"]})

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97334.html

相关文章

  • 【工具向】我所知道babel总结

    摘要:这两天研究了一下这个工具,因为平时项目基本都是脚手架生成的配置文件,真正自己想写点东西的时候,亲自去配却是一脸懵逼,写下这篇博客记录一下我的认知范围内的总结。 这两天研究了一下babel这个工具,因为平时项目基本都是脚手架生成的babel配置文件,真正自己想写点东西的时候,亲自去配却是一脸懵逼,写下这篇博客记录一下我的认知范围内的babel总结。首先,先看几个平时常见的babel配置s...

    Leo_chen 评论0 收藏0
  • Babel使用

    摘要:使用的时候只需要安装你想要的阶段就可以了然后添加进你的配置文件。为了显出的能耐,我们分别配个用和支持的先来配使用的首先安装然后配置需要注意的是,虽然没有出现在配置里,但仍然需要安装,因为依赖它。 Babel介绍 Babel 把用最新标准编写的 JavaScript 代码向下编译成可以在今天随处可用的版本。 这一过程叫做源码到源码编译, 也被称为转换编译。 15 年 11 月,Babel...

    Y3G 评论0 收藏0
  • Babel快速入门

    摘要:首先,作为入门的话,的用户手册是个很不错的选择,里面基本覆盖了使用的各方面。所以下面主要是我学习的一些笔记,姑且当作是一篇入门吧。下面我们正式进入正题。这也是最常用的一个用法之一。有两个方式进行配置。 首先,作为入门的话,Babel的用户手册是个很不错的选择,里面基本覆盖了Babel使用的各方面。所以下面主要是我学习Babel的一些笔记,姑且当作是一篇入门吧。 Babel是什么 按照B...

    notebin 评论0 收藏0
  • ES2015入门系列9-Babel和Rollup

    摘要:虽然够好用,奈何没有浏览器对其可以完全支持,本文书写时间,开发版号称已经支持的特性。开始安装本系列假定读者都有使用经验,如果还没有,赶紧去这里了解并安装吧。到此,我们的已经准备就绪。 通过前面章节的讲解,大家对ES2015的一些新语法有了初步的理解,之前我们的测试代码都可以直接放入 Chrome Console 中直接运行,为了更好的学习后面的面向对象和模块开发,我先用一章介绍一下 B...

    eccozhou 评论0 收藏0
  • webpack实战

    摘要:和类似的预处理器还有等。的用处非常多,包括给自动加前缀使用下一代语法等,目前越来越多的人开始用它,它很可能会成为预处理器的最终赢家。 webpack实战 查看所有文档页面:全栈开发,获取更多信息。快马加鞭,加班加点,终于把这个文档整理出来了,顺便深入地学习一番,巩固知识,就是太累人,影响睡眠时间和质量。极客就是想要把事情做到极致,开始了就必须到达终点。 原文链接:webpack实战,原...

    cyrils 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<