Bun-js 他來了!性能吊打 Node-js 和 Deno 的新一代 javaScript 運行時!

大家好,我是 ConardLi

今天跟大家介紹一個最新開源的 javaScript 運行時:Bun.js

剛開源不到一個月就獲得了 19.5k star!看起來馬上就會成爲 Node.jsDeno 的一大競爭對手了!

和傳統的 Node.js 這種傳統的 javaScript 運行時不同,Bun.js 直接內置了打包器、轉譯器、任務運行器和 npm 客戶端,這意味着你不再需要 Webpack/Rollup/esbuild/Snowpack/Parcel/Rome/swc/babel 就可以直接運行 TypeScript、JSX

另外,Bun.js 原生支持了數百個 Node.jsWeb 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 客戶端等等。

有哪些能力?

試用一下

安裝 Bun CLI

curl https://bun.sh/install | bash

BunHTTP 服務器基於 RequestResponseWeb 標準構建:

// http.js
export default {
  port: 3000,
  fetch(request) {
    return new Response("Hi, ConardLi!Welcome to Bun!");
  },
};

bun 運行它:

bun run http.js

然後在瀏覽器中打開 http://localhost:3000

CLI 命令:bun run:可以直接運行 JavaScriptTypeScript 文件以及 package.json 中的 scripts 腳本。

根據測試,bun 運行 package.json 腳本比 npm 運行 package.json 腳本快 30 倍。

CLI 命令:bun install:兼容 npm 的包管理器,使用最快的系統調用來複制文件。

根據測試,bun 比 npm 的包安裝速度快 20 倍。

CLI 命令:bun wiptest:一個類似於 Jest 的測試運行器,用於內置到 bunJavaScriptTypeScript 項目。

Bun 目前還處於 beta 階段,距離生產環節還有一段路要走,大家覺得它的未來究竟如何呢?

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/OqSYo4aigAYXYfhU-iEWhg