首页 > 其他分享 >babel 简介

babel 简介

时间:2023-09-04 15:23:03浏览次数:31  
标签:core 简介 Babel js finally env babel

Babel 是什么

Babel 是一个 Javascript 编译器

Babel 是一个工具链,主要用于将采用 ECMAScript 2015+ 语法编写的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是 Babel 能为你做的事情:

  • 语法转换
  • 通过 Polyfill 方式在目标环境中添加缺失的功能(通过引入第三方 polyfill 模块,例如 core-js)
  • 源码转换(codemods)
  • 更多参考资料

安装

使用 npm 安装 @babel/core @babel/cli @babel/preset-env

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

配置

babel.config.json

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "edge": "17",
          "firefox": "60",
          "chrome": "67",
          "safari": "11.1"
        }
      }
    ]
  ]
}

转换

src/map.js

[1, 2, 3].map(n => n + 1);

const fn = () => 1;

转换

npx babel src --out-dir lib --presets=@babel/env

dist/map.js

"use strict";

[1, 2, 3].map(function (n) {
  return n + 1;
});
var fn = function fn() {
  return 1;
};

Polyfill

安装 @babel/polyfill

npm install --save @babel/polyfill

babel.config.json 添加 useBuiltIns 配置项

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "edge": "17",
          "firefox": "60",
          "chrome": "67",
          "safari": "11.1"
        },
        "useBuiltIns": "usage"
      }
    ]
  ]
}

Babel 会自动检测代码并包含需要的 polyfill

比如,因为 Edge 17 没有 Promise.prototype.finally 所以

Promise.resolve().finally();

会转换为

require("core-js/modules/es.promise.finally");

Promise.resolve().finally();

如果配置是 "useBuiltIns": "entry" 那么需要在入口文件手动 import core-js

import "core-js/stable";

标签:core,简介,Babel,js,finally,env,babel
From: https://www.cnblogs.com/goallin/p/17677132.html

相关文章

  • celery简介与安装
    前言Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。它是一个任务队列,专注于实时处理,同时还支持任务调度。可以使用的场景如下:异步发邮件,这个时候只需要提交任务给celery就可以了.之后由worker进行发邮件的操作.跑批接口......
  • Tokenization 简介
    Tokenization是将文本分割成更小的单位,称为"token"的过程。在自然语言处理中,token可以是单词、短语、句子或其他更小的文本单位,具体取决于任务和需求。Tokenization的目的是将文本分解成离散的、可处理的单元,以便进行进一步的文本处理和分析。它是自然语言处理任务的重要预处理步......
  • 自然语言工具包(Natural Language Toolkit,简称NLTK) 简介
    自然语言工具包(NaturalLanguageToolkit,简称NLTK)是一个广泛使用的Python库,用于处理和分析自然语言文本。它提供了各种工具和数据集,用于文本预处理、语言模型、词性标注、句法分析、语义分析、情感分析、文本分类等自然语言处理任务。以下是NLTK的一些主要功能和特点:1.丰富的语......
  • 第01章-Spark SQL简介和常用语句
    第01章SparkSQL简介和常用语句21.1表21.1.1什么是SparkSQL中的表21.1.2内部表和外部表21.1.3视图31.1.4查看表描述31.2分区和分桶31.2.1什么是SparkSQL的分区(partition)31.2.2什么是SparkSQL的分桶(bucket)41.3写入数据51.3.1通过create写入数据51.3.2通过in......
  • golang realize数据库简介
    存储与数据库简介一个提供了读写,控制类接口,能够安全有效的把数据持久化的软件,就可以成为存储系统。-存储系统概览存储系统特点性能敏感既简单又复杂容易受硬件影响存储器层级结构单机存储栈RAID技术单块大容量磁盘的价格>多块小容量的磁盘单块磁盘的写入性能<多块磁盘的并发写入......
  • Spring-webflux简介及基本使用
    spring-webflux是spring在5.0版本后提供的一套响应式编程风格的web开发框架。这个框架包含了spring-framework和springmvc,它可以运行在Netty、Undertow以及3.1版本以上的Serlvet容器上。你可以在项目中同时使用spring-webmvc和spring-webflux,或者只用其中一个来开发web应用。......
  • sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇
    转sleep、yield、join方法简介与用法sleep与wait区别多线程中篇1.sleep不会释放锁,不会释放锁,不会释放锁 所以对于sleep方法,要么自己醒来,要么被中断后也会醒来 yield也是静态方法,所以,也是针对于当前线程,当前线程,当前线程。  2.主线程main中调用启动线程(调用start),......
  • MapReduce 中的两表 join 几种方案简介
    1.概述在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。本文首先介绍了Hadoop上通常的JOIN实现方法,然后给出了几种针对不同输入数据集的优化方法。2.常见的join方法介......
  • 无涯教程-Flutter - Dart简介
    Dart是一种开源通用编程语言,它最初是由Google开发的,Dart是一种具有C样式语法的面向对象的语言,它支持诸如接口,类之类的编程概念,与其他编程语言不同,Dart不支持数组,Dart集合可用于复制数据结构,例如数组,泛型和可选类型。以下代码显示了一个简单的Dart程序-voidmain(){print......
  • 每日一库:pprof简介
    pprof简介pprof是Go语言的一个性能分析库,它可以帮助开发者找出程序中的性能瓶颈。pprof提供了CPU分析、内存分析、阻塞分析等多种性能分析功能。以下是pprof的主要特性:CPU分析:pprof可以记录程序在CPU上的运行时间,并将这些数据以火焰图的形式展示出来。这可以帮助开发者找出程......