Rolldown-基于Rust的JavaScrip打包工具

两袖清风2年前技术文档4127

image.png

Rolldown 的优势

Rolldown 是一款用 Rust 重新编写的 Rollup 替代品。而 Rollup 使用的是 javascript。

Rolldown 具有以下特点:

  • 与 Rollup 兼容:Rolldown 设计之初就考虑到了与 Rollup 的兼容性,这意味着现有的 Rollup 插件和配置可以无缝迁移到 Rolldown,极大地方便了开发者的过渡和使用。

  • 更快的构建速度:Rolldown 致力于提供更快的构建速度,这对于开发效率的提升至关重要。在现代 Web 开发中,快速的反馈循环可以显著提高开发效率,而 Rolldown 正是为了满足这一需求而设计的。

  • 更小的输出体积:Rolldown 还专注于生成更小的输出体积,这有助于减少加载时间,提高用户体验。在移动设备和网络连接受限的环境中,这一点尤为重要。


Rolldown 类似于 esbuild,它是一款专注于速度和性能的 JavaScript 构建工具。

尤雨溪(Evan You)表示,在捆绑纯 esm 模块时,Rolldown 比 esbuild 快 1.4~2 倍。但这次大家对性能的关注度不太高。反而是 Rust 占了很大一部分的注意力。


Vite 存在的问题

目前,Vite 的底层使用了两个打包工具:Esbuild、Rollup

首先,让我们了解一下 Esbuild 和 Rollup 的特点。

Esbuild 是一个高性能的 JavaScript 打包器,专注于实现极速的构建过程。

image.png

它支持多种模块类型、语法转换和插件扩展,且无需缓存即可迅速完成打包任务。在 Vite 中,Esbuild 被用于依赖预打包、TypeScript 和 JSX 转换、目标降级以及代码压缩。

而 Rollup 则是一个 JavaScript 模块打包器,能够编译小块代码成复杂的大型代码块,特别支持 ES6 模块。

image.png

它支持 Tree Shaking,有效去除未使用的代码,减少最终文件大小。在 Vite 中,Rollup 被用于生产构建,并支持一个与 Rollup 兼容的插件接口。

然而,使用两个不同的打包工具存在明显弊端:它们之间的输出差异可能导致开发环境与生产环境行为的不一致,同时,用户代码在生产构建过程中会被多次解析、转换和序列化,从而增加了不必要的性能开销。

因此,希望 Vite 能够整合一个单一的、性能卓越的打包工具,既能减少解析和序列化开销,又能与 Rollup 插件生态兼容,并具备出色的大型应用构建输出控制能力。

正是在这个背景下,Rolldown 应运而生!


Rolldown 的未来

Rolldown 使用 Rust 编写,并且使用了 Oxc 中的工具。Oxc 是字节跳动出品的一个用 Rust 编写的 JavaScript 高性能工具集合,该项目的重点在于构建 JavaScript 的基本编译器工具:解析器、linter、格式化程序、转译器、压缩器和解析引擎。此外,OXC 还为 Rspack、Rolldown 和 Ezno 等新兴 JavaScript 工具提供支持。

目前,Rolldown 主要依赖其高效的解析器和解析引擎进行工作。未来,一旦 Oxc 的转换器和压缩器可用,Rolldown 也将计划集成它们,Rolldown 也将直接作为独立的打包使用。

当 Rolldown 发展至成熟阶段时,它将能够直接取代 Esbuild 和 Rollup,这样将减少了对外部工具的依赖,为未来的功能扩展提供更大的便利和灵活性。

可以说: Rolldown 可能是未来 5-10 年最具影响力的前端项目之一。


相关文章

最优雅的支付宝和微信支付SDK详细文档手册-Yansongda Pay SDK

概述在开发了支付宝与微信支付后,看里面的api文档一团,很我方法都是自己写,找了很多网上没有好用的,能集成支付宝和微信支付的SDK,想在网上找相关的轮子,可是一直没有找到一款自己觉得逞心如意的,要么使...

你的电脑秒变 NAS 服务器,打造家庭影音中心:AiNAS

你的电脑秒变 NAS 服务器,打造家庭影音中心:AiNAS

随着网盘吃相越来越难看,就很有必要入手一台 NAS 设备,拥有完全的支配权。如果你不想花费重金购买 NAS 设备,手头有闲置的电脑、NUC、MINI 主机等设备,通过安装 NAS 系统,也可以变成 N...

抢先安装体验 Win11 24H2 "正式版"

抢先安装体验 Win11 24H2 "正式版"

微软将于今年下半年发布 Win11 24H2 正式版,微软将在这个版本中带来大量的 AI 新功能。现在 Win11 24H2 正式版已经确认为 26100 版本号,进入到了 Release Previ...

PHP生成二维码PHPqrCode类库中文手册文档教程及下载

PHPqrCode是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,官方源码地址:https://github.com/t0k4rt/phpqrcodehttps...

宝塔面板php7.3&7.4版本不支持ZipArchive扩展解决办法

宝塔面板php7.3&7.4版本不支持ZipArchive扩展解决办法

详情内容宝塔面板php7.3&7.4版本不支持ZipArchive,会提示报错Class ‘ZipArchive‘ not found解決。要手工安装zip扩展首先需要安装libzip。宝塔面...

优秀 Win10 / 11 定制版:ReviOS

优秀 Win10 / 11 定制版:ReviOS

ReviOS介绍目前「ReviOS」系统提供了两个版本,分别是 Win10 和 Win11 系统,最新版都基于 2022 制作。这里锋哥选择 Win11 版本在虚拟机安装体验。镜像大小 3.49 GB...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。