大家好,我是王福鵬。
我是一名資深全端工程師,也是 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 是做什麼的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!