大家好,我是王福鹏。
我是一名高级全栈工程师,也是 17.5k 开源项目 PMP 的作者。现在我正在开发一个Notion风格的知识库
HuashuiAI 包括 AI 写作和协作,使用 React Nextjs 和 Supabase。
两个月前,Vue 和 Vite 作者 Evan You 宣布成立 VoiceZero 公司,并获得数百万美元投资。
VoidZero将基于Vite开发Rolldown和Oxc两大工具,统一前端JS工具链。解决碎片、不兼容、效率低等问题。
VoidZero核心工具采用Rust语言开发,运行效率高、速度快。
JS工具链主要包括语义分析、Transformer、linter、Transformer、minifier、bounder等流程
我们目前如何使用这些类型的工具?目前有哪些工具可用?他们之间是什么关系?它们真的效率低下且碎片化吗?下面我们就一一介绍一下。
注意他们的关系有些混乱,有的可以编译打包,有很多功能重叠,所以没必要强行分类比较。
所谓运行时,是指一种语言的运行时环境。如果没有运行时,那么语言只是一个无法解析和运行的字符串或字符串文件。
// 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。
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编译器,效率很高。
本节常用的是ESLint和Prettier,但它们的使用也存在一些混乱
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,而且速度非常快。
SWC也在开发自己的打包工具swcpack——这么多,你觉得乱吗?是碎片化的吗?
你可能会好奇,为什么这么多工具需要用 Rust 语言开发?主要有两点
回顾 JS 工具链的三个问题
所以,Vue 作者 Evan You 的眼睛很锐利,看得很准,能直接指出问题。而且他在这部分有很强的优势和抓地力,那就是Vite。 Vite现在拥有大量用户,可以作为一个很好的切入点。
当Vue等Web框架和Vite等单一工具遇到开发瓶颈时,Evan可以跳出这个圈子,发现更高层次的问题,并能够落地执行。这是值得我们学习的。
最后,这么多的投资,VoidZero需要一个投资回报。未来将如何商业化? Vite无法直接充值,那我们怎么赚钱呢?
关注我,我会在下一节详细分析。这将比技术和代码更有价值。
顺便说一句,我正在寻找一份国际工作机会,如果你有机会,欢迎通过我的 Github 个人资料联系我。
以上是Evan You 创建 VoidZero 是做什么的?JS 工具链存在哪些问题?的详细内容。更多信息请关注PHP中文网其他相关文章!