Bun-js 他來了!性能吊打 Node-js 和 Deno 的新一代 javaScript 運行時!
大家好,我是 ConardLi。
今天跟大家介紹一個最新開源的 javaScript 運行時:Bun.js。
剛開源不到一個月就獲得了 19.5k star!看起來馬上就會成爲 Node.js 和 Deno 的一大競爭對手了!
和傳統的 Node.js 這種傳統的 javaScript 運行時不同,Bun.js 直接內置了打包器、轉譯器、任務運行器和 npm 客戶端,這意味着你不再需要 Webpack/Rollup/esbuild/Snowpack/Parcel/Rome/swc/babel 就可以直接運行 TypeScript、JSX!
另外,Bun.js 原生支持了數百個 Node.js 和 Web API,包括約 90% 的 Node-API 函數 (fs、path、Buffer 等)。
Bun.js 的目標是可以在瀏覽器之外的其他地方運行世界上大多數 JavaScript,爲你未來的基礎架構帶來性能和複雜性的增強,並通過更好、更簡單的工具提高開發者的生產力!
性能表現如何?
服務端渲染:每秒處理 HTTP 請求數
加載一個巨大的 sqlite 表:每秒平均查詢次數
FFI:每秒操作數
爲啥這麼快?
和 Node.js、Deno 不同,Bun.js 並沒有基於 V8 引擎,它直接選擇了 JavaScriptCore 引擎,它的執行速度往往要比 V8 等更傳統引擎要快。
另外,Bun.js 是用一種具有手動內存管理的低級編程語言 ZIG 編寫的,對內存的低級控制、沒有隱藏的控制流可能就是它性能非常好的祕訣。
Bun.js 的大部分內容都是完全從零開始編寫的,包括 JSX/TypeScript 轉譯器、npm 客戶端、打包器、SQLite 客戶端、HTTP 客戶端、WebSocket 客戶端等等。
有哪些能力?
-
Web API:對fetch、WebSocket、 ReadableStream等API都提供了內置支持 -
Node.js模塊:Bun實現了Node.js的模塊解析算法,同時支持ESM和CommonJS,但Bun內部使用ESM。 -
支持轉譯大量文件類型,你可以直接運行
TypeScript、JSX,甚至支持各種tsconfig.json中的配置。
-
Bun.write使用最快的系統調用,實現寫入、複製、管道、發送和克隆文件。 -
自動加載環境變量
.env文件,不需要再require("dotenv").load() -
附帶一個內置的快速
SQLite3客戶端bun:sqlite -
Bun.js實現了大部分Node-API(N-API),大部分Node.js原生模塊都可以正常工作。 -
bun:ffi可以使用低成本的外部函數接口從JavaScript調用本機代碼 (據測試比napi快 5 倍 、比Deno快100倍)
- 原生支持不斷增長的
Node.js核心模塊列表以及全局變量,例如Buffer和process
試用一下
安裝 Bun CLI:
curl https://bun.sh/install | bash
Bun 的 HTTP 服務器基於 Request 和 Response 等 Web 標準構建:
// http.js
export default {
port: 3000,
fetch(request) {
return new Response("Hi, ConardLi!Welcome to Bun!");
},
};
用 bun 運行它:
bun run http.js
然後在瀏覽器中打開 http://localhost:3000。
-
查看更多示例:https://github.com/Jarred-Sumner/bun/tree/main/examples
-
查看官方文檔:https://github.com/Jarred-Sumner/bun#Reference
CLI 命令:bun run:可以直接運行 JavaScript 和 TypeScript 文件以及 package.json 中的 scripts 腳本。
根據測試,
bun運行package.json腳本比npm運行package.json腳本快 30 倍。
CLI 命令:bun install:兼容 npm 的包管理器,使用最快的系統調用來複制文件。
根據測試,bun 比 npm 的包安裝速度快 20 倍。
CLI 命令:bun wiptest:一個類似於 Jest 的測試運行器,用於內置到 bun 的 JavaScript 和 TypeScript 項目。
Bun 目前還處於 beta 階段,距離生產環節還有一段路要走,大家覺得它的未來究竟如何呢?
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/OqSYo4aigAYXYfhU-iEWhg