我知道你可能会觉得奇怪,心想:“Rust 明明就在那儿,为啥不用呢?”作为你们的 Rust 忠实推广者,我来和大家聊聊 Rust 是如何悄悄改变 JavaScript 生态的。
JavaScript 工具是现代网页开发的支柱,但它们已经有点“老”了。像 Webpack 和 Babel 这样的工具,虽然曾经是革命性的,但现在却因为构建速度慢和单线程瓶颈而拖累性能,尤其是在项目规模变大时。
这些问题的根源在于 JavaScript 的设计:它是解释型语言,而且是单线程的,不适合处理解析、打包和转译大型代码库这样的繁重任务。
而 Rust 凭借其速度、内存安全性和与 WebAssembly(WASM)的无缝集成,为 JavaScript 生态注入了新的活力,带来了开发者无法忽视的优势。
Rust 的崛起引发了一股“用 Rust 重写”的潮流,席卷了整个 JavaScript 生态。我们并没有看到太多阻力,反而发现许多 JavaScript 工具正在用 Rust 重写,以利用其性能优势。正如你所料,工具链正在复兴,性能不再是奢侈品,而是新标准。
以下是一些部分或完全用 Rust 重写的 JavaScript 工具,证明这不仅仅是炒作。
大牌工具
- Deno.:一个现代的 JavaScript 和 TypeScript 运行时,由 Node.js 的创始人 Ryan Dahl 用 Rust 从头构建。
- Speedy Web Compiler (SWC):一个基于 Rust 的可扩展平台,用于下一代快速开发者工具。Next.js、Parcel 和 Deno 等工具,以及 Vercel、字节跳动、腾讯和 Shopify 等公司都在使用它。
- Rspack:一个用 Rust 编写的高性能 JavaScript 打包工具。它与 webpack 生态兼容性很强,可以无缝替换 webpack,并提供闪电般的构建速度。
- Rolldown:一个用 Rust 编写的 JavaScript/TypeScript 打包工具,旨在成为 Vite 未来的打包工具。它提供 Rollup 兼容的 API 和插件接口,但在功能上更接近 esbuild。
- Turborepo:一个为 JavaScript 和 TypeScript 优化的增量打包工具,用 Rust 编写,并内置在 Next.js 中。你可以将 Turborepo 与 Pages 和 App Router 一起使用,以获得更快的本地开发体验。
- Oxc (The Oxidation Compiler).:这是一个雄心勃勃的项目,是一套用于 JavaScript 和 TypeScript 的高性能工具。Oxc 包括解析器、代码检查器、格式化工具、转换器、压缩器和解析器,提供了一个模块化、一体化的解决方案,既快速又多功能。
- Neon.:用于编写安全且快速的本地 Node.js 模块的 Rust 绑定。
- Biome:一个快速的格式化工具,支持 JavaScript、TypeScript、JSX、TSX、JSON、CSS 和 GraphQL,与 Prettier 的兼容性达到 97%,节省了 CI 和开发者的时间。
- Lightning CSS:一个极快的 CSS 解析器、转换器和压缩器。它可以与 Parcel 无缝协作,也可以作为独立库、CLI 或其他工具的插件使用。对于厌倦了缓慢 CSS 处理的人来说,这是一个改变游戏规则的工具。
- Boa:一个可嵌入的实验性 JavaScript 引擎。
- Parcel:一个零配置的网页构建工具。
- Ezno:一个快速且正确的 TypeScript 类型检查器和编译器,附带一些实验性功能。
- Nova:一个用 Rust 编写的 JavaScript(ECMAScript)和 WebAssembly 引擎,遵循数据导向设计原则。
- Canvas:高性能的 Skia 绑定到 Node.js。零系统依赖,纯 npm 包,无需任何安装后脚本或 node-gyp。
- Volta:无烦恼的 JavaScript 工具管理器。
开发者们喜欢这种性能提升,但并不是所有人都买账。一些 JavaScript 粉丝希望工具继续用 JavaScript 编写,因为这样更容易调整,也更符合生态系统。另一些人则因为觉得学习 Rust 很难,担心会搞乱现有的设置而持保留态度。不过,随着 Rust 证明其价值,越来越多的人正在转向它。
虽然 Rust 不太可能完全取代 JavaScript 工具,但它很可能会在速度和性能至关重要的领域占据主导地位。
WebAssembly(WASM)是另一个巨大的优势,它让 Rust 可以在浏览器中与 JavaScript 一起运行,从而实现协作。Rust 可以处理像代码处理这样的繁重任务,而 JavaScript 则保持界面的流畅。这种组合可以让网页开发更快、更直观,两种语言各展所长。
随着 Rust 凭借其速度和内存安全性“吃掉”JavaScript 工具,这不仅仅是一时的潮流,它正在改变我们构建网页的方式。