esbuild 极速的JavaScript构建打包工具

1、esbuild 是使用go语言编写的一个前端构建工具

相对于nodeJs的构建工具如webpack。go语言是纯机器码,没有js的解释过程;go新开了一个进程多线程并行,而js是单线程串行化的,所以从开发语言层面来说就更快。当nodejs还在解析打包程序的js的时候,go已经在解析要构建的js了。

2、esbuild内置了部分的loader直接使用go语言编写,可以直接使用

相对于nodeJs的构建工具中相同功能的loader相比也更快。不同于webpack中loader都要配置添加。比如内置了对.js、.jsx、.ts、.tsx 、.css、.module.css 等的支持,其他文件类型则需要添加社区的loader或者手写插件进行处理,比如:less、sass、img、字体图标库等。
esbuild的生态还不完善,很多插件其实只是包装了开源的loader框架,本质上还是用的js实现的,而且很多社区提供的插件都存在各种问题,需要自己实现插件,比如对css进行浏览器兼容添加浏览器前缀等问题

3、esbuild的代码分割很鸡肋

代码分割可以减小了初始加载时的文件体积,加速页面加载时间;也能提高缓存利用率,节省带宽成本;多个小块的代码可以并行下载,提高整体加载效率。而esbuild的代码分割,只支持esm 格式,对浏览器版本有限制;能对动态 import 的内容或多入口同时用到的代码进行分割。无法做到像webpack一样将使用到的某个库单独打包出去。

4、esbuild不支持HMR,需要借助插件实现。

5、esbuild目前的应用

主要因为esbuild在代码分割、css处理、不支持HMR、没有提供AST能力(不能转换成兼容低版本浏览器代码)等问题,虽然它很快,但它不适合直接用于生产环境,而更适合作为一种偏底层的模块打包工具,需要在它的基础上二次封装。在其他的构建工具中,只是将esbuild应用于开发环境,从而有更快的开发体验,比如在vite中 ,开发环境下使用esbuild快速构建,而构建部署版本时则使用的是rollup;在umi/mfsu中,开发环境下使用esbuild-loader替代label,而构建部署版本时则还是使用的babel。

总的来说,esbuild具有极快的构建速度、可扩展性、支持多种格式、不需要设置各种 loader,配置简单等。但还有很多不足:

  • 社区生态很弱,跟 Webpack 和 Vite 完全不在一个量级
  • 插件之间兼容性问题很严重
  • 代码分割能力太弱,只能基于入口进行分割
  • 对目标浏览器版本有一定要求
  • 不支持 HMR
  • 为了保持结构的一致性,没有提供转化的 AST 的 API
  • 由于工具和插件还是采用 JavaScript 编写,存在解析速度相对较慢的可能性
  • 对于复杂场景,配置还是像 Webpack 一样复杂
  • 可以在简单项目或类库开发中使用
    总之,esbuild 不是像 Webpack 是一个大一统项目,提供完善的插件机制,而是在极度精简之后的打包工具,快才是它的追求目标。

文章内容只做学习记录,内容转自别的大佬博客,主要参考:

Esbuild深度调研:吹了三年,能上生产了吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 开源到商业(二):开源骇客沦为大厂社畜

前文提到,MySQL AB 接受了 Sun 公司的收购要约,开源骇客 Monty 也同时加入了 Sun 公司。双方对于 MySQL 的开源前景踌躇满志,准备大力投入新一代存储引擎 Maria 的开发,用于取代被 Oracle 收购的 InnoDB 引擎。作为一个芬兰人&…

LeetCode - LCR 179.查找总价格为目标值的两个商品

一. 题目链接 LeetCode - LCR 179. 查找总价格为目标值的两个商品 解法(双指针 - 对撞指针): 算法思路: 注意到本题是升序的数组,因此可以用「对撞指针」优化时间复杂度。 算法流程: 初始化left &#…

如何快速申请SSL证书实现HTTPS访问?

申请SSL证书最简单的方法通常涉及以下几个步骤,尽量简化了操作流程和所需专业知识: 步骤一:选择适合的SSL证书类型 根据您的网站需求,选择最基础的域名验证型(DV SSL)证书,它通常只需验证域名所…

【以奖代补】诗情画意润童心 书香课堂志愿行

中华古诗词历史源远流长,名篇佳作数不胜数。为弘扬民族文化精髓,丰富乡村儿童假期生活。2024年4月21日上午,襄州区社会工作者协会联合襄州区张家集镇社工站、张集村“童叟乐园”志愿服务队在张集村开展“诗情画意润童心 书香课堂志愿行”志愿…

JavaSE:抽象

一,抽象是什么,抽象和面向对象有什么关系 抽象,个人理解,就是抽象的意思 我们都知道面向对象的四大特征:封装,继承,多态,抽象 为什么抽象是面向对象的特征之一,抽象和面…

jQuery基础学习(属性操作、循环、事件冒泡委托、元素节点操作、滚轮事件、函数节流、json、ajax、jsonp与本地存储)

一、jquery属性操作 1、html() 取出或设置html内容 // 取出html内容 var $htm $(#div1).html();// 设置html内容 $(#div1).html(<span>添加文字</span>);2、prop() 取出或设置某个属性的值 // 取出图片的地址 var $src $(#img1).prop(src);// 设置图片的地址和…

【ESP32入门实战】初识ESP32

【ESP32入门实战】初识ESP32 文章目录 【ESP32入门实战】初识ESP32&#x1f468;‍&#x1f3eb;前言【写作缘由】&#x1f9d1;‍&#x1f393;ESP32介绍&#x1f469;‍&#x1f4bb;ESP32-WROOM-32&#x1f469;‍&#x1f4bb;ESP32的组成部分 &#x1f468;‍&#x1f3eb…

记内网http洪水攻击,导致网页无法访问一事

事由 最近两日&#xff0c;部分同事在访问税纪云平台时&#xff0c;登录跳转页面频繁转圈、要么就是出现无法连接的错误提示。 无法访问此页面 已重置连接。 请尝试: 检查连接检查代理和防火墙运行 Windows 网络诊断经过以下几方面的排查&#xff0c;无果。 后续通过检查…

LoRa技术在物联网领域的安全性挑战与应对策略分享

随着物联网技术的飞速发展&#xff0c;LoRa技术作为一种新兴的无线通信技术&#xff0c;在物联网领域展现出了广阔的应用前景。然而&#xff0c;与此同时&#xff0c;其安全性问题也日益凸显&#xff0c;成为了制约其进一步发展的重要因素。本文将深入分析LoRa网络存在的安全漏…

4月23号总结

java实现发送邮件 在做聊天室项目的时候&#xff0c;由于需要发送邮箱验证码&#xff0c;所以自己查找了这方面的内容。 首先需要在Maven里面依赖 <dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><versio…

冯喜运:4.25黄金原油上演过山车走势附操作建议

【黄金消息面分析】&#xff1a;周四&#xff08;4月25日&#xff09;亚洲时段&#xff0c;现货黄金窄幅震荡&#xff0c;目前交投于2320美元/盎司附近。金价周三企稳在2300关口上方&#xff0c;收报2315.80美元/盎司&#xff0c;中东紧张局势导致的风险溢价有所缓和&#xff0…

数据类型与变量(Java)

数据类型与变量&#xff08;Java&#xff09; 字面常量数据类型变量变量概念整型变量整型变量长整型变量短整型变量字节型变量 浮点型变量双精度浮点型单精度浮点型 字符型变量布尔型变量类型转换自动类型转换(隐式)强制类型转换(显式) 类型提升 字面常量 常量&#xff1a;常量…

AI预测体彩排列3第2套算法实战化测试第3弹2024年4月25日第3次测试

今天继续进行新算法的测试&#xff0c;今天是第3次测试。好了&#xff0c;废话不多说了&#xff0c;直接上图上结果。 2024年4月25日体彩排3预测结果 6码定位方案如下&#xff1a; 百位&#xff1a;4、5、3、6、1、0 十位&#xff1a;6、5、4、3、1、0 个位&#xff1a;6、2、7…

24二战上岸北邮计算机经验贴(初试+复试超详细)

个人情况介绍 我本科就读于南方的一所211&#xff0c;学的专业是网络工程。学习成绩在班级里是中等水平&#xff0c;挂了两门课。之前专业课学得不仔细&#xff0c;因此考研备考相当于在学新知识。我是二战上岸的&#xff0c;两次都是报考的是北邮计算机科学与技术&#xff08…

ASP.NET基于WEB的选课系统

摘要 设计本系统的目的是对选课信息进行管理。学生选课系统维护模块主要完成的是系统管理与维护功能。课题研究过程中&#xff0c;首先对系统管理模块进行了详尽的需求分析&#xff0c;经分析得到系统管理模块主要完成如下的功能&#xff1a;用户基本信息、选课信息的录入,查看…

【图论 单源最短路】100276. 最短路径中的边

本文时间知识点 单源最短路 图论知识汇总 LeetCode100276. 最短路径中的边 给你一个 n 个节点的无向带权图&#xff0c;节点编号为 0 到 n - 1 。图中总共有 m 条边&#xff0c;用二维数组 edges 表示&#xff0c;其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条…

Visual Studio调试C/C++指南

1. 前言 Visual Studio&#xff08;VS&#xff09;是微软开发的一款集成开发环境(IDE)软件&#xff0c;支持C/C、C#、VB、Python等开发语言&#xff0c;开发桌面、Web等应用程序。VS功能极其强大&#xff0c;使用极其便利&#xff0c;用户数量最多&#xff0c;被誉为"宇宙…

JDK的安装和配置

这里写自定义目录标题 1.Java 开发工具包在上方已关联资源下载使用2.JAVA_HOME3.CLASSPATH4.PATH5.包内含有visualvm 1.Java 开发工具包在上方已关联资源下载使用 2.JAVA_HOME JAVA_HOME C:\Program Files\Java\jdk1.8.0_1313.CLASSPATH CLASSPATH .;%JAVA_HOME%\lib\dt.jar…

Pell数列

总时间限制: 3000ms 内存限制: 65536kB 描述 Pell数列a1, a2, a3, ...的定义是这样的&#xff0c;a1 1, a2 2, ... , an 2 * an − 1 an - 2 (n > 2)。 给出一个正整数k&#xff0c;要求Pell数列的第k项模上32767是多少。 输入 第1行是测试数据的组数n&#xff…

5月计算机各省报名时间汇总报名流程

&#x1f4e3;5月有5省可进行计算机报名 天津&#xff1a;5月6日-5月10日 福建&#xff1a;5月6日9:00-5月12日17:00 广西&#xff1a;5月6日9:00-5月12日23:55 重庆&#xff1a;5月6日9:00-5月12日24:00 西藏&#xff1a;预计5月6日-12日 &#x1f50d;计算机等级考试报…