产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

特立独行?尤雨溪领衔,Vue 团队开源 Rust 打包工具

  • 2024-03-11
    北京
  • 本文字数:1749 字

    阅读完需:约 6 分钟

大小:825.02K时长:04:41
特立独行?尤雨溪领衔,Vue 团队开源 Rust 打包工具

最近,Vue 团队正式开源了基于 Rust 的打包工具 Rolldown。

 


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

 

Rolldown 具有以下特点:

  • 与 Rollup 兼容

  • 更快的构建速度

  • 更小的输出体积

 

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

 

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

 


在前端领域里使用 Rust,到底对不对很难讲,有位网友是这样评价的:“esbuild 基本上是 Evan 的单人项目,所有代码都是为 esbuild 量身打造的。这并不是什么坏事,Evan 独自一人提升了 Node 的捆绑性能,并带领我们走上了使用 Rust 开发工具的道路。其他语言的工具编写库和生态系统正蓬勃发展,例如针对 JS/TS/Node 的 oxc、SWC、LightningCSS、Biome、rslint、Deno、rspack、napi-rs/Neon 项目,以及针对 Python 的 ruff、uv、rattler、pixi 等项目。这些项目带来了大量的库和作者,可以互相分享和帮助。此外,就个人而言,使用比如 Rust 这种语言来编写解析器等工具并没有让它更具工效。”

 

也许 Rolldown 这个例子很好地展现了技术发展的“拐点”。毕竟,几年前,用 Rust 开发 JavaScript 工具被认为不是最优选择。然而,一些特立独行的人并不在意。

 

对于语言的转变,尤雨溪还特地表示“以前主要使用 JS/TS 的 Vue 社区成员,现在能够在 Rust 中做出贡献了。”

 


Rolldown 官网显示,该项目团队成员共有 4 人,现在由 Vue 和 Vite 作者尤雨溪领导。

 


这个项目,也被一些 Vue 粉捧得像“天上有地上无”似的:“Rolldown 可能是未来五到十年间最具份量的 Web 项目。它以领先时代的气魄带来了摇树优化等关键概念。”

 



在 Vite.js 中,Rollup 同样是构建过程的一大基石。大多数 Vite 插件本身就是 Rollup 插件。

而且在诞生后不久,Vite 就成了几乎各类主要元框架的标准开发与构建环境,包括 nuxt.js、solid.js、sveltejs kit、remix.run 乃至 Angular CLI 等(可能唯一的例外就是 Next)。Rollup 同样是这些项目的基石,成功从一种在 npm 上发布捆绑库的方式演化为如今 Web 编写的中流砥柱。

 

现实问题:

从客观来看,我们正身处这样的 Web 开发环境:Rollup 已经被用于构建 Web 上几乎一切服务(虽然与其诞生的初衷不符),而其性能(实际上就是 JavaScript 的性能)仍有提升空间。用 Go 语言编写的捆绑器 esbuild 已经向全世界展示了“原生”捆绑器能有多快,但其除了无法兼容 Rollup 之外,还有其他一系列缺点(例如不支持 TypeScript、摇树优化功能有限等)。

Vite.js 同时使用 esbild 与 Rollup,因此兼具了双方的各自优势,但也引发了新的问题:解析。不同的构建工具会使用不同的 AST 树,且每种工具都必须解析代码以导出 AST。此外,Rollup/Vite 的很多插件还有自己的解析过程。可以想见,如果只需要一次解析就能让所有技术栈的全部层都用上同一个 AST 树,那性能岂不是一飞冲天?

事实证明,Vite.js 往往需要在栈内各层次上把同一个 TS 文件至少解析 5 次,这里的优化空间可谓巨大。

 

解决方案:

Rolldown 项目就是想要彻底解决以上问题。首先,它采用 Rust 编写而成,Rust 正是目前速度最快的语言之一——甚至比 Go(也就是 esbuild)更快,这主要得益于 Rust 没有垃圾收集机制。在某些应用场景下,速度优势可能并不重要,但在解析和编译上下文中则有着非凡的意义(而且讽刺的是,Rust 本身却是世界上最慢的编译器)。

Rolldown 的目标还不止于加快速度,更尝试与 Rollup 实现 API 兼容。这同样是一项巨大的成就,一旦成功,Vite.js 团队相当于能够在飞机航行的过程中更换发动机。

最后、也是 Rolldown 最雄心勃勃的核心目标,就是提供一种标准 singular parse 方法。这虽是个远期目标,但考虑到 Vite 已经广泛普及,再加上 Rolldown 使用 OXC 进行解析,我们最终可能会迎来围绕单一解析和 AST 树建立起的标准化新世界。由此给开发环境和构建速度带来的性能提升将极为可观。

如果成功,Rolldown 将负责转换 Web 代码中的几乎每一个字节,且完全不受大家实际框架的影响。

 

对于 Justin Schroeder 的说法,各位前端大大是怎么看的?欢迎留言评论:)

 

参考链接:

https://twitter.com/jpschroeder/status/1766115866859446477

https://dev.to/justinschroeder/rolldown-why-it-matters-4129

 

2024-03-11 17:528793

评论

发布
暂无评论

Java开发培训的就业方向有哪些?

小谷哥

Java加密技术(四)非对称加密算法RSA

No Silver Bullet

RSA密码 9月月更 非对称加密算法

干货 | 如何实现软件自动化部署?

嘉为蓝鲸

运维 IT 应用发布 应用部署

写出优秀的产品手册文档的技巧

Baklib

文档 产品手册

OpenHarmony Camera源码分析

OpenHarmony开发者

OpenHarmony

太牛了,这是我见过把微服务讲的最全最好的SpringCloud架构进阶

程序知音

Java 架构 微服务 SpringCloud 后端技术

OneFlow源码解析:Tensor类型体系与Local Tensor

OneFlow

深度学习 源码解析 算子

好像知道的人不多?Spring容器关闭执行销毁方法有几种,看完MQ源码我才知道SmartLifecycle最快

程序知音

Java spring 程序员 后端 框架

Baklib|FAQ常见问题对产品推广的重要性

Baklib

产品 FAQ

怎么来选择大数据培训课程

小谷哥

Java培训学习技术需要具备哪些能力

小谷哥

大规模数据如何实现数据的高效追溯

华为云开发者联盟

大数据 后端 华为云 企业号九月金秋榜

大促活动如何抵御大流量 DDoS 攻击?

京东科技开发者

安全 电商 DDoS 电商大促 防护

Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProcessor解析

石臻臻的杂货铺

spring 9月月更

5 分钟比较理解 require() vs import()

掘金安东尼

前端 9月月更

Linux系统安装配置Tomcat

Linux Tomccat 9月月更

超长序列,超快预测!深势科技联手阿里云,AI蛋白质预测再下一城

阿里云大数据AI技术

人工智能 深度学习 企业号九月金秋榜

访问控制系统的质量评价

权说安全

网络安全 零信任 访问控制

零信任态势评估:安全控制自动化

权说安全

零信任 动态评估

学员在web前端培训机构应该怎么学习

小谷哥

SAP UI5 的规则构建器控件介绍

汪子熙

JavaScript SAP SAP UI5 ui5 9月月更

硬实力!旺链科技与蚂蚁、腾讯共同入选国家工信安全中心“区块链优选计划”

旺链科技

区块链 产业区块链 Baas 企业号九月金秋榜 融合创新

TiFlash 源码解读(八)TiFlash 表达式的实现与设计

PingCAP

源码阅读 TiDB TiDB 源码解读

给工作加点料——试一试python

为自己带盐

Python 爬虫 9月月更

贝斯的圆桌趴 |科技公司内部 SaaS 工具大公开

Bytebase

知识管理对企业的作用不容小觑

Baklib

知识管理 企业

如何选择比较靠谱的数据培训班?

小谷哥

干货 | 企业数字化转型过程中,传统IT和数字型IT能否严格区分?

嘉为蓝鲸

运维 转型 IT 数字化 研发

《小米创业思考》之二:互联网简史

郭明

读书笔记

首批合作伙伴!博云携手中科院共建 SERVE 云平台规范

BoCloud博云

云计算 云原生 处理器

江南农村商业银行容器云平台建设经验分享

BoCloud博云

云计算 云原生 容器云

特立独行?尤雨溪领衔,Vue 团队开源 Rust 打包工具_架构/框架_Tina_InfoQ精选文章