Bun 能否取代 Nodejs ? 誰才是JavaScript Runtime 最後的王者?

程序員最幽默 發佈 2024-04-11T12:37:15.224599+00:00

想了解更多軟體相關知識的朋友, 記得右上角先加一個【關注】,感謝支持!

想了解更多軟體相關知識的朋友, 記得右上角先加一個【關注】,感謝支持!


Nodejs 的出現,為前端帶來無限可能;一經問世,前端的工作方式發生了翻天覆地的變化;沒想到第一個被幹掉的竟然是當年前端界的扛把子「Jquery」;

隨著Npm包的不斷增長,龐大的node_modules就像一座大山,讓開發者喘不過氣。

寫過NodeJS的同學都會有一個體會,自己只寫了幾行代碼,但是要安裝的包竟然達到幾個G,可能有些誇張,但是大量的node_modules真的很令人崩潰。

就在nodejs讓人頭疼的時候,一款號稱「nodejs 殺手」的替代品「bun」出現了。

據Bun官方介紹,Bun 是一種 「all-in-one」 的JavaScript運行時。

有沒有被震撼到,all-in-one!當我試著使用了Bun一段時間之後,得到了一個結論。

這玩意確實很厲害,但是似乎又缺點什麼。

既然Bun 這麼厲害,那麼它都有哪些獨特之處呢?

Bun 特性:

  • 快速啟動。它在本地計算機、伺服器或邊緣運行您當前的 JavaScript 和 TypeScript 應用程式或腳本。
  • 快速運行性能。Bun 並沒有採用V8,而是使用了更快的JavaScriptCore。
  • 凝聚力。Bun 是一個完整的工具包,包括捆綁器、轉譯器和包管理器。

從bun 公布的測試結果,server端渲染來看,bun 確實比nodejs、deno快至少3倍以上。

當然Bun作為「nodejs 替代者」;

還包含了以下特性:

  • 實現了Web Api,可以獲取WebSocket和ReadableStream
  • 實現Node的node_modules解析算法,你可以在bun中直接使用npm包
  • 內置轉移器,轉譯每個文件,TypeScript和JSX可以直接使用。
  • 支持,來自"paths""jsxImportSource"tsconfig json文件。
  • 自動從.env文件加載環境變量
  • 內置bun:sqlite
  • 實現了大部分Node-API,所以很多原生Node.js模塊都可以正常工作。


從以上特性來看,bun 所要做的不光光是解決JavaScript runtime的問題,更是要把之前nodejs 支持的特性全部兼容;所以才有了「all-in-one」的口號。

當然,除了這些優點,bun 目前還有很多問題待解決;

最大的一個問題是Bun目前使用的zig開發語言也正在開發期,目前最新的版本還在beta,未正式發布,前途未卜。

第二個比較大的問題是bun目前只支持 mac、linux、windows下需要使用 WSL!

我想說,難道bun的作者是忽略了windows用戶還是自己只有mac?

還有更大的一個問題是bun 的生態系統如何建立? 是繼續使用Npm?

不過話說回來,Bun 還很年輕,從目前來看,它的優勢也很明顯;

未來一切順利的話,也許JavaScript最佳運行時會被易主。

關鍵字: