Bun“全家桶” JavaScript 運行時
Bun 是采用 Zig 語言編寫的高性能 “全家桶” JavaScript 運行時,官方稱其為 "all-in-one JavaScript runtime"。Bun 提供了打包、轉譯、安裝和運行 JavaScript & TypeScript 項目的功能,內置原生打包器 (native bundler)、轉譯器、task runner、npm 客戶端,以及 fetch、WebSocket等 Web API。
Bun 是一個新的:
- 帶有 Web API 的 JavaScript 運行時,內置
fetch、WebSocket等 API。bun 嵌入了 JavaScriptCore,它往往比 V8 等更流行的引擎更快且內存效率更高(盡管更難嵌入) - JavaScript/TypeScript/JSX 轉譯器
- JavaScript 和 CSS 打包器
- package.json 腳本的任務運行器
- npm 兼容的包管理器
Bun 的 HTTP 服務器基于 Request 和 Response 等 Web 標準:
// http.js
export default {
port: 3000,
fetch(request) {
return new Response("Welcome to Bun!");
},
};
Bun 完全從零開始構建,對標的項目是 Node.js 和 Deno 這類現(xiàn)代化的 JavaScript 運行時。
Bun 旨在替代當前的 JavaScript 和 TypeScript 應用程序或腳本,原生實現(xiàn)了數(shù)百個 Node.js 和 Web API,包括約 90% 的 Node-API 函數(shù)(native modules)、fs、path、Buffer 等。
Bun 的目標是在瀏覽器之外運行世界上大多數(shù) JavaScript,為未來的基礎架構帶來性能和復雜性的增強,并通過更好、更簡單的工具提高開發(fā)人員的生產(chǎn)力。
- 內置了諸如 fetch、WebSocket 和 ReadableStream 等Web API
- node_modules bun 實現(xiàn)了 Node.js 的模塊解析算法,因此你可以在 Bun 中使用 npm 包。支持ESM和CommonJS,但Bun內部使用ESM
- 在 Bun中,每個文件都是轉譯的。TypeScript和JSX就可以使用
- Bun支持來自tsconfig.json文件的 "paths"、"jsxImportSource "等。
- Bun.Transpiler Bun的JsX和TypeScript轉譯器在Bun中作為API可用。
- 使用Bun.write提供的最快系統(tǒng)調用來寫入、復制、管道、發(fā)送和克隆文件。
- Bun自動從.env文件加載環(huán)境變量。不再需要 require("dotenv").config()
- Bun提供了一個快速的SQLite3客戶端,內置bun:sqlite。
- Node-API Bun實現(xiàn)了大部分的Node-API(N-API)。許多Node.js原生模塊都可以使用
- bun:ffi 使用Bun的低開銷外部函數(shù)接口從JavaScript調用 native code。
- node:fs node:path Bun原生支持越來越多的Node.js核心模塊,以及像Buffer和process這樣的globals。
性能測試結果對比:
▲ 服務器端渲染(每秒的 HTTP 請求數(shù))
▲ 加載大型數(shù)據(jù)表(每秒的平均請求數(shù))
評論
圖片
表情
