首页 > 其他分享 >编译工具 Babel

编译工具 Babel

时间:2024-03-04 20:45:22浏览次数:28  
标签:package Babel js 编译 json babel 工具

编译工具 Babel

Babel 主要有三个功能:

  • 转义 ES6 为 ES5,保证新语法也可以在旧版本浏览器中运行。
  • 通过 polyfill 方式在目标环境中添加缺失特性。
  • 源码转换。

1. 安装 Babel

(1)生成 package.json

mkdir babel-note && cd babel-notenpm init -y

(2)安装 @babel/core,@babel/cli

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

@babel/core 是 Babel 的核心包,@babel/cli 是 Babel 提供的命令行工具,提供 Babel 命令。需要基于 @babel/core 才能正常工作。

(3)安装 @babel/preset-env,@babel/polyfill

npm install --save-dev @babel/preset-env @babel/polyfill

@babel/preset-env 会根据配置的目标环境生成插件列表并进行编译,目标环境可以在 package.json 文件 browserslist 中配置。

// package.json
"browserslist": [
  "> 1%",
  "last 2 versions",
  "not dead"
]

Babel 默认只转换新的语法,不转换新的 API(如:Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol 和 Promise 等全局对象),以及一些定义在 Object 对象上的方法(如:Object.assign)。只有安装了 @babel/polyfill 才会正常执行。

2. Babel 的四种配置文件

  • babel.config.js,项目根目录下的 JS 文件,官方推荐。
  • .babelrc,配置文件内容是 JSON 数据结构。
  • package.json 的 babel 字段。
  • .babelrc.js

以 babel.config.js 为例提供编译结果:

// 项目根目录下 babel.config.js
module.exports = function (api) {
    api.cache(true);
    const presets = ["@babel/preset-env"];
    const plugins = [];
    return {presets, plugins};
}
// /scr/index.js
let compare = (a, b) => {
    return a >b;
}
// package.json
...
"scripts": {
    "build": "babel src --out-dir lib"
}
...

执行 npm run build 将会在 lib 目录下输出编译好的 JS 代码:

"use strict";

var compare = function compare(a, b) {
  return a > b;
};

3. Babel 工作过程

Babel 作为编译器,和其他编译器一样,工作过程可以分为三部分:

  • 解析(parse):将源代码转换成抽象语法树(Abstract Syntax Tree,AST),树上的每个节点都表示源代码中的一种结构。
  • 转换(transform):对抽象语法树做一些特殊处理,使其符合编译器的期望,在 Babel 中主要通过转换器实现。
  • 代码生成(generate):将转换过的抽象语法树生成新的代码。

标签:package,Babel,js,编译,json,babel,工具
From: https://www.cnblogs.com/xinjie-just/p/18050142

相关文章

  • 提高C++编译速度
    提高C++编译速度BuildPerformanceInsights-Crascit如何分析和提高大型项目(C/C++)的编译速度?-知乎(zhihu.com)以上链接提供了提高编译速度的方案,以及如何检查是编译哪个文件花的时间最长。实践下来,我采用的方案是直接换用ninja来替代make,结合CMake计时参数,成功将......
  • 七款顶级API测试工具
    在现代软件开发中,API接口已成为不可或缺的核心组件。鉴于API缺乏直观的图形用户界面(GUI),使得直接对接口进行测试变得困难,对于前后端开发者而言,选择一套高效且实用的工具来测试API接口,从而验证开发的程序是否满足预期,显得尤为重要。在处理大量API时,手动测试不仅效率低下,而且容易出错......
  • Qt MSVC使用内存泄露检测工具 VLD(Visual Leak Detector)
    一、简介VLD=VisualLeakDetector,是一款用于VisualC++的免费的内存泄露检测工具,官网 kinddragon.github.io, GitHub 。先说优点:为每个泄漏的块提供完整的堆栈跟踪,包括源文件和行号信息(如果可用)。检测大多数(如果不是全部)类型的进程内内存泄漏,包括基于COM的泄漏......
  • Zabbix重新编译步骤
    比如说,当Zabbix要重新编译对odbc的支持时,需要,添加--with-unixodbc参数,系统需要安装unixODBC-devel$yuminstallunixODBC-devel重新编译zabbix:#停止zabbix服务器systemctlstopzabbix-server#重新编译zabbix./configure--prefix=/usr/local/zabbix--enable-ser......
  • 全网首套完整containerd容器工具教程
    1、Containerd的由来【Docker名噪一时,捐出runC】2013年docker公司在推出docker产品后,由于其对全球技术产生了一定的影响力,Google公司明显感觉到自己公司内部所使用的Brog系统江湖地位受到的威胁,希望Docker公司能够与自己联合打造一款开源的容器运行时作为Docker核心依赖,但Docker......
  • nodejs安装、编译、执行 & npm 使用
    前言全局说明nodejs安装&npm使用nodejs是一个解释器,只是它运行再后端,在命令行看到执行结果;如果用html+js写的页面用浏览器打开,那就是可以在前台看到js执行结果。一、官网官网:https://nodejs.org/文档:https://nodejs.org/en/docs/中文网:http://nodejs.cn/GitHub......
  • shell工具连接linux时的报错问题
    问题描述在使用shell工具连接linux时报以下错误SSH!Agentauthselected,butnorunningagentisdetectedSSH!Agentauthselected,butnorunningagentisdetected解决方法方法1#首先使用ping方法查看是否在同一网段pingxxx.xxx.xx.x方法2#安装[openss......
  • 使用dnSpy反编译DLL修改代码后生成新的DLL
    1.准备完整的DLL文件夹,包含需要引用的DLL2.使用dnSpy打开文件夹内需要修改的DLL,找到要修改的方法,例如: Kingdee.BOS.ServiceHelper.DataCenterService.IsLicControl(Contextctx,StringformId),右键编辑方法. 3.进入修改代码界面,进行代码修改,并添加需要的引用,点击"......
  • Linux 监控工具htop
    htopyum安装[root@localhost~]#yum-yinstallepel-release[root@localhost~]#yuminstallhtop[root@localhost~]#yum-yinstallepel-release[root@localhost~]#yuminstallhtop[root@localhost~]#htop......
  • C++编译过程
     第一步:.cpp→.i第二步:.i→.s  是汇编文件第三步:.s→.o 此时已经算是目标文件的最终形态了,完整后缀是.obj第四步:通过链接器将用的到的库,如.dll和.o文件连接起来,执行.exe就是相当于执行前面连接起来的这堆文件 详细过程和G++调用参考:https://zhuanlan.zhihu.c......