bable 【实用教程】

简介: bable 【实用教程】

简介

bable 用于将 ES6 的语法编译为 ES5

  • 只关心语法,不关心 API 是否正确。
  • 不处理模块化(webpack 会处理)

搭建开发环境

  1. 安装相关的包
npm i @babel/cli @babel/core @babel/preset-env
  1. 新建文件 .babelrc,内容为
{ 
    "presets": [
        [
            "@babel/preset-env"
        ]
    ],
    "plugins": [
    ]
}
  • presets 内为预设的 plugins 的集合
  • 编译 jsx,用 @bakel/preset-react
  • 编译 TS,用 @babel/preset-typescript
  • bable 本身是个空壳,所有的编译是通过一个个 plugins 实现的

执行编译

npx babel src/index.js

babel-polyfill

babel-polyfill 是 core-js 和 regenerator 的集合。

  • core-js 除了不支持生成器语法,其他都能编译
  • regenerator 可编译生成器语法,弥补了 core-js 的不足

注意事项:

Babel 7.4之后弃用了 babel-polyfil,推荐直接使用 core-js和 regenerator,但面试中还是可能考察。

按需引入的配置方法

按需引入:只引入代码中使用的部分,其他部分不引入,可减少最终打包的体积。

.babelrc

"presets": [
    [
        "@babel/preset-env",
        {
            "useBuiltIns": "usage",
            // corejs 的最新版本号
            "corejs": 3
        }
    ]
],

abel 7.4之后弃用了 babel-polyfil,但也是按此方式配置,因为它直接用的 corejs ,没有用到 babel-polyfil

存在的问题

会污染全局环境,因为其实现方式是:

可能会覆盖用户的定义。

babel-runtime

用于解决 babel-polyfil 污染全局环境的问题。

仅自己开发的系统,可以不使用 babel-runtime ,但若是开发第三方库,则一定要用 babel-runtime

实现原理

使用 _promise ,_includes 等自定义名称的方式,避免和用户的定义冲突。

配置方法

  1. 安装 @babel/plugin-transform-runtime 在 devDependencies 中
  2. 安装 @babel/runtime 在 dependencies 中
  3. .babelrc 的 plugins 中添加
    "plugins": [
        [
            "@babel/plugin-transform-runtime",
            {
                "absoluteRuntime": false,
                "corejs": 3,
                "helpers": true,
                "regenerator": true,
                "useESModules": false
            }
        ]
    ]

通常按此官方配置即可。

目录
打赏
0
1
1
0
64
分享
相关文章
|
10月前
|
Python量化炒股的数据信息获取—获取上市公司分红送股数据信息
Python量化炒股的数据信息获取—获取上市公司分红送股数据信息
133 3
回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现
本文详细介绍了回声状态网络(Echo State Networks, ESN)的基本概念、优点、缺点、储层计算范式,并提供了ESN的Python代码实现,包括不考虑和考虑超参数的两种ESN实现方式,以及使用ESN进行时间序列预测的示例。
577 4
回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现
深入理解微服务架构:设计与实施
【10月更文挑战第7天】深入理解微服务架构:设计与实施
137 0
HTML【详解】表格 table 标签(table的属性,语义化表格,简易表格,合并单元格)
HTML【详解】表格 table 标签(table的属性,语义化表格,简易表格,合并单元格)
458 0
HTML【详解】表格 table 标签(table的属性,语义化表格,简易表格,合并单元格)
Serverless 应用引擎产品使用合集之在部署Laravel时,如何处理伪静态
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
CSS【详解】布局 display ( 含 flex 布局,grid 布局,table 布局,float 布局,响应式布局 等)
CSS【详解】布局 display ( 含 flex 布局,grid 布局,table 布局,float 布局,响应式布局 等)
403 0
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
581 0
【C 语言】文件操作 ( 使用 fseek 函数生成指定大小文件 | 偏移量 文件字节数 - 1 )
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等