ES6转ES5_nodejs支持es6吗

ES6转ES5_nodejs支持es6吗Babel介绍Babel是一个ES6转码器,能将ES6代码转为ES5代码,这样原本不支持ES6的老版本浏览器执行ES6代码//转码前:使用了ES6箭头函数items.map(item=>item+1);//转码后:转为了普通函数items.map(function(item){returnitem+1;});Babel安装安装Babel,一个命令就够了:$npminstall–save-dev@babel/cor…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Babel介绍

Babel是一个 ES6 转码器,能将 ES6 代码转为 ES5 代码,这样原本不支持ES6的老版本浏览器执行ES6代码

// 转码前:使用了ES6箭头函数
items.map(item => item + 1);

// 转码后:转为了普通函数
items.map(function (item) {
  return item + 1;
});

Babel安装

安装 Babel,一个命令就够了:

$ npm install --save-dev @babel/core

Babel使用

注意!!! Babel 工具和模块的使用,都必须先写好Babel的配置文件 .babelrc 

// 初始状态下的.babelrc文件内容
{
  "presets": [],           
  "plugins": []
}

其中 presets 主要用于设定转码规则,官方提供了规则集,可按自己的需要去安装相应的规则集,也可以说是预设

# 最新转码规则
$ npm install --save-dev @babel/preset-env

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

安装好后,就把安装的规则集填入上面说的presets字段里

  // 填入了规则集的.babelrc文件内容
  {
    "presets": [
      "@babel/env",
      "@babel/preset-react"
    ],
    "plugins": []
  }

写好.babelrc文件后呢,那就可以开始使用咯

babel提供了几种使用方式去转码,这里一一介绍

1. 使用babel命令行转码

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

如果你要使用命令进行转码的话,当然是先安装这个工具,安装命令:

$ npm install --save-dev @babel/cli

用法:

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

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

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

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

2. 使用babel-node命令得到REPL 环境转码

@babel/node模块babel-node命令,提供一个支持 ES6 的 REPL 环境。它支持 Node 的 REPL 环境的所有功能,能直接运行 ES6 代码。

如果你要在该环境中进行转码的话,当然是先安装上@babel/node模块,模块安装命令:

$ npm install --save-dev @babel/node

安装好后,输入babel-node命令,就能进入这个环境了

$ npx babel-node

另外babel-node命令直接运行 ES6 脚本

// es6.js 文件
(x => x * 2)(1)

这里可以使用babel-node命令运行es6.js这个文件,可以得到以下结果

$ npx babel-node es6.js
2

3. 使用require命令只对某些类型文件转码

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

同样先安装该模块:

$ npm install --save-dev @babel/register

使用时,必须首先加载@babel/register

// index.js
require('@babel/register');
require('./es6.js');
// es6.js 文件
(x => x * 2)(1)

然后,就不需要手动对index.js转码了。

$ node index.js
2

需要注意的是,@babel/register只会对require命令加载的文件转码,不会对当前文件转码。另外,由于它是实时转码,所以只适合在开发环境使用。

4. 提供对默认不转码的方法进行转码

由于Babel 默认只转换新的 JavaScript 句法(syntax),不转换新的 API,比如IteratorGeneratorSetMapProxyReflectSymbolPromise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会对它们进行转码。

也就是说比如像ES6 在Array对象上新增了Array.from方法。Babel 就不会转码这个方法。

那么想让这个方法运行,就可以使用core-jsregenerator-runtime(后者提供generator函数的转码),为当前环境提供一个垫片。

同样需要先安装

$ npm install --save-dev core-js regenerator-runtime

然后,在脚本头部,加入如下两行代码。

import 'core-js';
import 'regenerator-runtime/runtime';
// 或者
require('core-js');
require('regenerator-runtime/runtime');

5. 在浏览器环境转码

使用@babel/standalone模块提供的浏览器版本,将其插入网页。

<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
// Your ES6 code
</script>

注意:网页实时将 ES6 代码转为 ES5,对性能会有影响。因为生产环境需要加载已经转码完成的脚本。

另:Babel 提供一个REPL 在线编译器,可以在线将 ES6 代码转为 ES5 代码。转换后的代码,可以直接作为 ES5 代码插入网页运行。

总结:就是先安装babel,然后配置好.babelrc文件,再根据场景选择一种或者多种方式,安装相应的模块或者工具进行使用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190036.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu安装qt4.8.7_ubuntu卸载qt

    ubuntu安装qt4.8.7_ubuntu卸载qt由于qt4.8支持的环境比较老,所以ubuntu1820这些高版本安装时会出现各种问题,最好在14和16下安装,本文的版本是ubuntu16.04。下载并安装首先下载,然后解压,下载地址为:https://download.qt.io/archive/qt/4.8/4.8.6/tar-xzvfqt-everywhere-opensource-src-4.8.6.tar.gz然后cd进解压目录中,输入./configure,然后选择o回车,接着输入yes回车./config

    2022年10月15日
    3
  • Python中通过PyPDF2实现PDF添加水印

    Python中通过PyPDF2实现PDF添加水印场景PyPDF2是一个纯pythonPDF库,能够分割、合并、裁剪和转换PDF文件的页面。它还可以向PDF文件中添加自定义数据、查看选项和密码。它可以从PDF检索文本和元数据,还可以将整个文件合并在一起。PyPDF21.26.0文档:https://pythonhosted.org/PyPDF2/实现使用pip安装pypddf2新建文件夹waterPDF在…

    2022年6月23日
    24
  • clion2021.4激活码_通用破解码

    clion2021.4激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    47
  • 谷歌地球无法连接服务器解决方法_谷歌地图无法连接服务器是什么原因

    谷歌地球无法连接服务器解决方法_谷歌地图无法连接服务器是什么原因从2020年11月20号左右,谷歌地球中国服务器全部关停,所有原来可以使用的hosts,全部不能使用了,导致原来可以在电脑上打开谷歌地球的,现在全部提示无网络,如下图:这个是谷歌地球的最新版,一样打不开:解决办法,尝试了,国内所有的有关谷歌地图的软件。唯一现在可以使用的:BIGEMAP如下图分享地址给大家,大家可以安装来试一试,免费可用:http://download.bigemap.com/bmsetup.rar欢迎留言,提供更多谷歌地球的信息…

    2026年1月25日
    5
  • 2021最新最细致的IDEA集成SVN工具的使用 (入门到精通)

    2021最新最细致的IDEA集成SVN工具的使用 (入门到精通)SVN教程1、SVN常见操作发布项目(shareproject)项目组长将本机项目第一次发布到中央仓库中下载项目(检出项目checkout)组员将中央仓库中的项目第一次下载到本地提交(commit)将本地修改的内容同步到服务器中(本地=>服务器)编写完一个小功能之后、每天下班前一定要及时提交更新(update)将服务器中最新的代码同步到本地(服务器=>本地)编写功能之前,每天上班前一定要及时更新2、SVN安装2.1svn服务端

    2022年10月17日
    5
  • 数据库去重有几种方法_数据库去重有几种方法

    数据库去重有几种方法_数据库去重有几种方法MySQL数据库去重的方法​数据库最近有很多重复的数据,数据量还有点大,本想着用代码解决,后来发现用SQL就能解决,这里记录一下看这条SQLDELETEconsum_recordFROMconsum_record,(SELECTmin(id)id,user_id,monetary,consume_timeFROMconsum_recordGROUPBYuser_id,monetary,co…

    2022年10月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号