Evan You 創建 VoidZero 是做什麼的?
大家好,我是王福鵬。
我是一名資深全端工程師,也是 17.5k 開源專案 PMP 的作者。現在我正在開發一個Notion風格的知識庫
HuashuiAI 包括 AI 寫作和協作,使用 React Nextjs 和 Supabase。
尤文 (Evan You) 和 VoidZero
兩個月前,Vue 和 Vite 作者 Evan You 宣布成立 VoiceZero 公司,並獲得數百萬美元投資。
VoidZero將基於Vite開發Rolldown和Oxc兩大工具,統一前端JS工具鏈。解決碎片、不相容、效率低等問題。
VoidZero核心工具採用Rust語言開發,運作效率高、速度快。
JS工具鏈有哪些問題
JS工具鏈主要包括語意分析、Transformer、linter、Transformer、minifier、bounder等流程
我們目前如何使用這些類型的工具?目前有哪些工具可用?他們之間是什麼關係?它們真的效率低且碎片化嗎?下面我們就一一介紹一下。
注意他們的關係有些混亂,有的可以編譯打包,有很多功能重疊,所以沒必要強行分類比較。
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。
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,但它們的使用也存在一些混亂
- ESLint的設定標準很多(例如Recommended、Airbnb、Google、StandardJS等),每個人使用的方式可能都不一樣。不同的項目也可能有不同的配置
- 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
你可能會好奇,為什麼這麼多工具需要用 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 是做什麼的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

探索前端中類似VSCode的面板拖拽調整功能的實現在前端開發中,如何實現類似於VSCode...
