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
63
分享
相关文章
来了!HelloGitHub 年度热门开源项目
本期为HelloGitHub 年度盘点,为了满足不同读者的需求,作者将内容分为 Top10 和 精选 两部分
搭建微信公众号AI助手
将微信公众号(订阅号)变为AI智能客服仅需四步:创建大模型问答应用、搭建微信公众号连接流、引入AI智能客服及增加私有知识。首先在百炼平台创建应用并获取API密钥;其次利用阿里云AppFlow服务无代码连接微信公众号与大模型应用;接着配置公众号引入AI客服;最后上传企业知识文档提升客服精准度。通过这些步骤,轻松实现智能化客户服务。
745 2
WebSocket 【实用教程】
WebSocket 【实用教程】
138 1
开源项目推荐
探索 Kubernetes 工具和资源:Kubernetes Goat 提供了一个有漏洞的集群来学习安全实践;kube-state-metrics 收集集群状态指标以辅助监控;Goldilocks 优化 Kubernetes 资源请求;KubePlus 从 Helm 图表创建 Kubernetes API;kubecm 管理 kubeconfig 文件更便捷。
|
9月前
|
决定做一个开源项目
决定做一个开源项目
42 0
分享开源项目Chatwoot
Chatwoot是一个开源的客户支持平台,它提供了一系列工具,使企业能够通过各种渠道(如电子邮件、社交媒体、网站聊天窗口等)与客户进行沟通。它的目标是为企业提供一个统一的界面,汇总来自不同渠道的客户对话,从而提高客户服务效率和效果。
153 0
高仿微信的开源项目
高仿微信的开源项目
148 0
如何让开源项目成为你的良师益友
开源项目不仅仅给公司带来巨大价值,同时也可以给使用者自身带来巨大价值。
2815 0
AI助理

你好,我是AI助理

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