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