今日は、最新のオープンソース javaScript
ランタイムを紹介しますBun.js
。
26.1k
1か月足らずでスターを獲得しました ! との大きな競争相手になるよう 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
し、将来のインフラストラクチャにパフォーマンスと複雑さの強化をもたらし、より優れた、よりシンプルなツールで開発者の生産性を向上させることです。
パフォーマンスはどうですか?
サーバー側レンダリング: 1秒あたりに処理されるHTTP
リクエスト
巨大なテーブルの読み込み sqlite
:1秒あたりの平均クエリ
FFI
:1秒あたりの操作数
なぜそんなに速いのですか?
また 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
中的配置。
Input | Loader | Output |
---|---|---|
.js | JSX + JavaScript | .js |
.jsx | JSX + JavaScript | .js |
.ts | TypeScript + JavaScript | .js |
.tsx | TypeScript + JSX + JavaScript | .js |
.mjs | JavaScript | .js |
.cjs | JavaScript | .js |
.mts | TypeScript | .js |
.cts | TypeScript | .js |
.toml | TOML | .js |
.css | CSS | .css |
.env | Env | N/A |
.* | file | string |
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
。
- その他の例を参照してください:github.com/Jarred-Sumn…
- 公式ドキュメントをチェックしてください:github.com/Jarred-Sumn…
CLIコマンド:: スクリプト と ファイル およびファイル は bun run
直接実行できます 。JavaScript
TypeScript
package.json
scripts
テストによると、スクリプトの
bun
実行 はスクリプトの 実行package.json
よりも 30倍高速です。npm
package.json
CLIコマンド::bun install
互換性 npm
のあるパッケージマネージャー。最速のシステムコールを使用してファイルをコピーします。
テストによると、bunはnpmの20倍の速さでパッケージをインストールします。
CLIコマンド:: ビルトイン および プロジェクト用bun wiptest
の同様の Jest
テストランナー 。bun
JavaScript
TypeScript
このようなbunjsは、置換ノードのメンバーになることが期待されます。