JavaScript 以不斷獲得新的框架和庫而聞名。2022 年 7 月,生態系統迎來了一個新成員:Bun.js。 在這裡,我們將看看 Bun.js,看看它如何影響更廣泛的 JavaScript 生態系統。
目錄
什麼是 Bun.js?
Bun 被定義為“一個快速的一體化 JavaScript 運行時”。它是繼 Node.js 和 Deno.js 之後的第三個此類,由 Jarred Sumner 使用 Zig 編程語言創建。
它的主要目標是提供一個在瀏覽器之外運行 JavaScript 的平台,就像 Node.js 和 Deno.js 一樣,但 Bun 的進步是為了提供更高水平的速度和增強的複雜性。
JavaScript 是如何演變的
JavaScript 最初是為僅在瀏覽器內部運行而構建的,由 SpiderMonkey 和 V8 等引擎提供支持。2009 年,Ryan Dahl 將 V8 引擎嵌入到一個他稱之為 Node.js 的 C++ 程序中。JavaScript,從那時起就與各種用途相關,如服務器端和實時應用程序。
Promises 和 ES 模塊是 Node.js 創建時不存在的現代 JavaScript 功能的示例。Ryan 還在 2018 年發表了關於他對 Node.js 感到遺憾的事情的演講。 他的遺憾激發了他在 2020 年發布的 Deno.js 的創作。
Deno 是使用 Rust 構建的可執行文件,旨在解決 Node 的所有缺陷,例如安全性、性能和原生 TypeScript 支持。 它比 Node 更快、更安全,而且它帶有 Node.js 中沒有的工具。
但是,即使在發布四年後,Deno 也沒有獲得預期的大規模採用,因為大多數現代系統已經是基於 Node 的,並且更改對於開發人員來說可能是一件痛苦的事。 必須重寫大多數 npm 包以支持 Deno 也對它的採用提出了挑戰。
2022 年 7 月,一個新的運行時出現在測試版中——“Bun.js”——這一直是 JavaScript 社區內外的熱門話題。 與 Node.js 的互操作性和它聲稱提供的高速性能一直是展示品。 它還引發了關於最終出現“節點破壞者”的討論。
Bun.js 與 Node.js 和 Deno.js 相比如何?
Node、Deno 和 Bun 都是瀏覽器之外的 JavaScript 運行時,這並不能消除它們之間的差異。
Node.js 用 C++ 編寫,Deno 用 Rust 編寫,Bun 用 Zig 編寫。“Zig 中對內存的低級控制和缺乏隱藏的控制流使得編寫快速軟件變得更加容易”Bun 的網站說。
雖然 Node 和 Deno 都運行 Google 的 V8 引擎,但 Bun 利用 Apple Safari 使用的 Webkit 的 JavaScriptCore 引擎的“快速啟動”性能。 該網站的基準測試結果顯示,Bun 在性能上擊敗了 Node 和 Deno,運行速度至少比兩個運行時快 3 倍。
Bun 內置了 npm(Node 包管理器),這使得從 npm 安裝包變得簡單快捷(Node 速度的 20 倍),它還支持 TypeScript 和自動轉譯 TS 和 JSX 文件。Bun 的其他令人興奮的功能包括一個內置的 SQLite3 客戶端、諸如 fetch 和 WebSocket 之類的 Web API、環境變量自動加載和一個測試運行器。
在這三個人中,Bun 以表演為主。Node 仍然是擁有非常大社區的最穩定的節點,而 Deno 是目前最安全的節點。
Bun.js 真的會影響生態系統嗎?
生態系統對 Bun 的發布感到興奮。 令人欣慰的是,自宣布以來,圍繞 Bun 的炒作一直很激烈。 這絕對是一件大事。 考慮到它“超快”的速度和強大的生產力工具,JavaScript 開發人員會非常喜歡它。
此外,Bun 的 Discord 服務器已經擁有超過 2000 名成員,這證明了社區對這項新技術的興奮。
Node.js、Deno.js 和 Bun.js 的未來是什麼?
JavaScript 不會很快消失。 實際上,它是我們確信在 10 年後仍會存在的技術之一。Node、Deno 和 Bun 也有未來。
Node 仍在定期更新,最近剛剛發布了 18.0 版本,因此即使有 Deno 和 Bun,它的未來仍然完好無損。 許多像 PayPal 這樣的公司在他們的基礎設施中使用 Node,甚至新的初創公司也在效仿。
Deno 的情況與此類似,它正在積極開發並不斷壯大。Deno 還在推進 SaaS 解決方案,以提供託管 JavaScript 運行時服務。
Bun.js 仍然不穩定且支持有限(您需要 Windows Subsystem for Linux 才能在 Windows 上運行它)。 雖然它有這麼多的功能,但它現在不能成為生產就緒軟件的選擇,因為它還有很多工作要做。
雖然 Bun 的未來肯定充滿希望,但有理由相信這三種技術很可能最終在生態系統中共存,而不是一種取代另一種。
Bun.js 可能會改變遊戲規則
使用 Bun,JavaScript 的很多方面可能會變得更好。 可能是時候讓 JavaScript 在 AI/ML、遊戲開發等性能關鍵領域得到更好的採用了。前往 Bun.sh 網站了解如何安裝並開始使用 Bun 進行開發。