搜索
首页web前端js教程Evan You 创建 VoidZero 是做什么的?JS 工具链存在哪些问题?

大家好,我是王福鹏。

我是一名高级全栈工程师,也是 17.5k 开源项目 PMP 的作者。现在我正在开发一个Notion风格的知识库
HuashuiAI 包括 AI 写作和协作,使用 React Nextjs 和 Supabase。

尤文 (Evan You) 和 VoidZero

两个月前,Vue 和 Vite 作者 Evan You 宣布成立 VoiceZero 公司,并获得数百万美元投资。

VoidZero将基于Vite开发Rolldown和Oxc两大工具,统一前端JS工具链。解决碎片、不兼容、效率低等问题。

VoidZero核心工具采用Rust语言开发,运行效率高、速度快。

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

JS工具链存在哪些问题

JS工具链主要包括语义分析、Transformer、linter、Transformer、minifier、bounder等流程

我们目前如何使用这些类型的工具?目前有哪些工具可用?他们之间是什么关系?它们真的效率低下且碎片化吗?下面我们就一一介绍一下。

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

注意他们的关系有些混乱,有的可以编译打包,有很多功能重叠,所以没必要强行分类比较。

JS运行时

所谓运行时,是指一种语言的运行时环境。如果没有运行时,那么语言只是一个无法解析和运行的字符串或字符串文件。

  • Nodejs 是最常见的 JS 运行时,稳定、成熟,并且拥有非常丰富的生态系统。
  • Deno 是近几年开发的 JS 运行时,专注于 TS 支持和网络安全。前两年获得了 2000 万美元的投资,最近发布了 Deno 2.0,目前正在快速发展
  • Bun JS运行时,注重性能和一体化
// Nodejs Deno 或 Bun,都是写 JS 代码
const server = Bun.serve({
  port: 3000,
  fetch(request) {
    return new Response("Welcome to Bun!");
  },
});

console.log(`Listening on localhost:${server.port}`);

注意:JS运行时并不是JS工具链的一部分,它只是最基本的能力,但是了解这些工具和术语可以帮助将它们与JS工具链区分开来。你可能没有用过它,但你需要知道它的存在以及它的作用。

解析器/编译器

Web前端开发需要考虑与各种浏览器的兼容性,因为现代浏览器还无法直接运行 TS JSX 和最新的 ES 代码。

所以,我们需要将开发环境中的TS JSX ES等代码转换为浏览器可以执行的JS代码,通常是ES5。

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

Babel 是最早做这项工作的人之一,使用 JS 开发,拥有丰富的生态系统和插件,并且早已集成到 webpack rollup 等打包工具中。

但是Babel是用JS开发的,所以运行效率比较低。而且Babel在编译TS JSX时需要手动配置,相当麻烦。

SWC是一个用Rust语言开发的JS编译器,比Babel快20-70倍(在不同CPU上),并且原生支持TS和JSX语法,旨在取代Babel。 Vite内部使用SWC。

Rspack 使用 Rust 语言开发,但它不仅仅是一个 JS 编译器。是一款高效的综合打包工具。

与Rspack一样,ESBullid也是使用Go语言开发的,是一个综合性的打包工具,包含JS编译器,效率很高。

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

短绒检查和格式化程序

本节常用的是ESLint和Prettier,但它们的使用也存在一些混乱

  • ESLint的配置标准有很多(比如Recommended、Airbnb、Google、StandardJS等),每个人使用的方式可能不一样。不同的项目也可能有不同的配置
  • ESLint 和 Prettier 存在一些重复的功能,导致使用时难以选择,并且可能存在重复的配置

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

缩小器

UglifyJS是最早用来压缩JS代码的之一,现在它的下载量也非常大。

Terser基于UglifyJS源码开发,支持ES6新语法并优化Tree Shaking。

不过,SWC、esbulid等新工具现在也支持JS代码压缩,而且执行效率更高。毕竟 Rust 或者 Go 本身的执行效率就比 JS 高很多。

邦德勒

打包器是我们最常接触的,比如Webpack Vite、Parcel。后者可能不常用,但也是一个成熟的工具。

Vite使用SWC作为解释器,效率很高。开发环境使用esbulid打包,生产环境使用rollup打包。

同时,esbulid(Go语言开发,前面介绍过)和rollup也可以单独使用作为打包工具,很多第三方JS插件都是使用rollup进行打包的。

Turbopack 是 Vercel 使用 Rust 为 Next.js 项目开发的 JS 打包工具,也可以独立使用。

Rspack 是一个使用 Rust 开发的 JS 打包工具(附带 JS 编译器),可以替代 webpack,而且速度非常快。

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

SWC也在开发自己的打包工具swcpack——这么多,你觉得乱吗?是碎片化的吗?

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

为什么使用 Rust

你可能会好奇,为什么这么多工具需要用 Rust 语言开发?主要有两点

  • Rust 是一种编译型语言,可以编译为本机代码并直接运行,性能与 C 相当
  • Rust 内存管理更安全,而 C 内存管理更容易出现 bug

结局

回顾 JS 工具链的三个问题

  • 碎片化:这个太明显了,各个领域都有很多重复的工具,尤其是巨石
  • 不兼容性:旧工具与新语法(尤其是 TS JSX)兼容,并且需要过多配置
  • 效率低:这个也是很明显的。在工具领域,JS 做得不如 Rust,被淘汰只是时间问题(别慌:这只是工具领域,应用领域还是 JS 和 TS)

所以,Vue 作者 Evan You 的眼睛很锐利,看得很准,能直接指出问题。而且他在这部分有很强的优势和抓地力,那就是Vite。 Vite现在拥有大量用户,可以作为一个很好的切入点。

当Vue等Web框架和Vite等单一工具遇到开发瓶颈时,Evan可以跳出这个圈子,发现更高层次的问题,并能够落地执行。这是值得我们学习的。

最后,这么多的投资,VoidZero需要一个投资回报。未来将如何商业化? Vite无法直接充值,那我们怎么赚钱呢?

关注我,我会在下一节详细分析。这将比技术和代码更有价值。

顺便说一句,我正在寻找一份国际工作机会,如果你有机会,欢迎通过我的 Github 个人资料联系我。

以上是Evan You 创建 VoidZero 是做什么的?JS 工具链存在哪些问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
JavaScript应用程序:从前端到后端JavaScript应用程序:从前端到后端May 04, 2025 am 12:12 AM

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

Python vs. JavaScript:您应该学到哪种语言?Python vs. JavaScript:您应该学到哪种语言?May 03, 2025 am 12:10 AM

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

JavaScript框架:为现代网络开发提供动力JavaScript框架:为现代网络开发提供动力May 02, 2025 am 12:04 AM

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

JavaScript,C和浏览器之间的关系JavaScript,C和浏览器之间的关系May 01, 2025 am 12:06 AM

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

node.js流带打字稿node.js流带打字稿Apr 30, 2025 am 08:22 AM

Node.js擅长于高效I/O,这在很大程度上要归功于流。 流媒体汇总处理数据,避免内存过载 - 大型文件,网络任务和实时应用程序的理想。将流与打字稿的类型安全结合起来创建POWE

Python vs. JavaScript:性能和效率注意事项Python vs. JavaScript:性能和效率注意事项Apr 30, 2025 am 12:08 AM

Python和JavaScript在性能和效率方面的差异主要体现在:1)Python作为解释型语言,运行速度较慢,但开发效率高,适合快速原型开发;2)JavaScript在浏览器中受限于单线程,但在Node.js中可利用多线程和异步I/O提升性能,两者在实际项目中各有优势。

JavaScript的起源:探索其实施语言JavaScript的起源:探索其实施语言Apr 29, 2025 am 12:51 AM

JavaScript起源于1995年,由布兰登·艾克创造,实现语言为C语言。1.C语言为JavaScript提供了高性能和系统级编程能力。2.JavaScript的内存管理和性能优化依赖于C语言。3.C语言的跨平台特性帮助JavaScript在不同操作系统上高效运行。

幕后:什么语言能力JavaScript?幕后:什么语言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在浏览器和Node.js环境中运行,依赖JavaScript引擎解析和执行代码。1)解析阶段生成抽象语法树(AST);2)编译阶段将AST转换为字节码或机器码;3)执行阶段执行编译后的代码。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能