Bun 1.0 初試

更新於 2024/09/12閱讀時間約 4 分鐘

Bun 在 2023/9/8 釋出了 1.0 版本,這篇文章就來說一下為什麼 Bun 會被關注,還有該怎麼使用它。

Bun Intro

Bun 用於開發、測試、運行與打包 JavaScript 或 TypeScript 專案,它將執行階段( runtime )和工具包合成一體化的 JavaScript 進而來提升速度。其中包含打包工具( 如:Webpack、Vite )、測試運行器和與 Node.js 兼容的 package manager( 如:npm、pnpm )。

Bun 的目標就是要替代 Node.js,成為世界上最多使用 JavaScript 運行的伺服器,Bun 有著更高的性能和降低複雜度。

有這樣的目標也難怪大家會這麼關注 Bun 了,而目前整體使用下來,這個目標感覺真的有機會成功。( 對的,沒人 care Deno 🤣 )

為什麼能提高速度?

Node.js 和 Deno 它們都是使用 Chrome V8 引擎來執行的,而 Bun 是使用 Safari 的 JavaScriptCore 來建構的,所以速度上更快。

以下是由 Bun 官方所測試出來的比較圖:

Benchmark

Benchmark

Bun APIs

上面有說到,Bun 的目標是為了要取代 Node.js,所以也有很多相對應的 APIs 相應而生,像是讀取檔案就可以使用:

const file = Bun.file(import.meta.dir + '/package.json');

const pkg = await file.json();
pkg.name = 'my-package';
pkg.version = '1.0.0';

await Bun.write(file, pkg);

其他更多的 APIs 可以參考 Bun guides

Bundler

Bundler 就像是 Node.js 的 npm,是用來管理套件管理器,官網標榜比 npm 快 30 倍、比 pnpm 快 17 倍。

用起來的方式基本與 npm 一樣,這邊簡單介紹一下:

npm vs bundler

npm vs bundler

Bun 還可以使用 Git 來獲得 dependency:

bun add git+https://github.com/lodash/lodash.git
bun add github:colinhacks/zod

Installation

首先,先確認自己的環境,如果你的環境是 macOS 與 Linux,那基本上沒什麼問題,但如果你的環境是 Windows,Bun 就會被限制,頂多只能運行不能做其他動作。

這裡我會使用 Linux 環境來示範。如果是 Linux 需要先有 unzip 再輸入:

curl -fsSL https://bun.sh/install | bash 
如果是 Fish Shell 使用者,Bun 在安裝時就會幫你配置好路徑了

Quick Start

新建資料夾:

mkdir test-bun
cd test-bun

運行以下指令初始化專案:

bun init

來建立一個簡單的 HTTP server,修改專案裡的 index.ts

// index.ts
const server = Bun.serve({
port: 3000,
fetch(req) {
return new Response(`Bun!`);
},
});

console.log(`Listening on http://localhost:${server.port} ...`);

運行:

bun index.ts

接著訪問 http://localhost:3000 就可以看到建立好的伺服器了。

使用 Vite 與 Bun 建構前端

根據 Build a frontend using Vite and Bun 敘述,雖然還沒有優化,不過 Vite 與 Bun 是可以一起使用的。

使用 Bun 來建構 Vite 專案:

bunx create-vite my-app

結語

整體使用下來最有感的莫非就是 bundler,速度比以前介紹的 pnpm 還要快。一些 API 的使用方式比 Node.js 來的簡單並且效能也更好,運用在後端的建構上是非常方便的。

目前前端會使用到的還是打包工具與 bundler,運行的部分可能還是要交由 Vite 之類的,React 是可以直接與 Bun 結合使用的,不過 Vite 可能就還要在等上一陣子了。

Github
Mango Blog

avatar-img
2會員
4內容數
簡單的了解一個關於程式相關的主題
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇主要著重於補充前面所有談過的內容中,我認為值得再次提醒、詳談的部分
Thumbnail
NVIDIA公布財報後的結果,相信是讓不少人感到失望。不過我倒是認為這很正常,因為只有邏輯不好的人才會認為「NVIDIA公布財報等於股市上漲」。這次來談談8/29當天發生的細節,談談美股未來的方向
Thumbnail
細節一直都是決定一件事能不能做好的關鍵因素之一,所以從這篇開始我會談眾多細節。談談如何從細節看出主力的意圖、股市的漲跌
Thumbnail
有一天有位大神問我你知道npm yarn pnpm bun 之間的差別?我突然楞神一下!!!! 好吧我從未想過這個問題於是我開始研究 使用方式:與其他工具類似,通過命令行使用,但具有自己的一些特定命令和功能。 適合情境:目前在市場上使用較少,主要在一些追求性能和速度優化的專案中或者對於新技
Thumbnail
#政大美食 #JuicyBun 政大最知名漢堡專賣店-Juicy Bun Burger,多樣化西式餐點,搭配酥脆薯條及特製醬料,份量十足超美味,是美食沙漠中的少數綠洲,一到用餐時間總是座無虛席!招牌牛肉漢堡排超多汁,不會有腥臭味,漢堡麵包相當Q彈,我選雙重起司口味,口感超濕潤~薯條酥脆不油膩,不論
Thumbnail
安石的安時好日子❤ 無麵粉 無麩質〈小麥蛋白〉 純素 無奶 無蛋 不添加任何油脂 主粉包x3,原裝酵母x3,椰糖(紅包裝)x3,無鋁泡打粉x3,可以做三次,每次做6個麵包,共做18個麵包 三種口味配方 紅麴口味 紅麴米磨成粉10g 甜菊糖液體15滴 150CC飲用水 南瓜口味 南瓜粉10g 甜菊
Thumbnail
田安石的安時好日子❤ 無麵粉 無麩質〈小麥蛋白〉 純素 無奶無蛋 不添加任何油脂 只需要準備甜菊糖液〈Now Food 椰子,榛果,香草,太妃糖甜菊醣液都很適合〉 只烤25分鐘出爐 主粉包x3,酵母x3,椰糖(紅)x3,無鋁泡打粉x3,可以做三次,每次做6個麵包,共做18個麵包 步驟作法 烤箱要夠力
Thumbnail
田安石的安時好日子❤ 無麵粉 無麩質〈小麥蛋白〉 純素 無奶無蛋 不添加任何油脂 只需要準備甜菊糖液〈Now Food 椰子,榛果,香草,太妃糖甜菊醣液都很適合〉 只烤25分鐘出爐 主粉包x3,酵母x3,椰糖(紅)x3,無鋁泡打粉x3,可以做三次,每次做6個麵包,共做18個麵包 步驟作法 烤箱要夠力
Thumbnail
田安石的安時好日子❤ 無麵粉 無麩質 純素 無奶 不添加任何油脂 只需要準備甜菊糖液 25分鐘出爐 軟Q小圓包每一個3g淨碳水 步驟作法 取一鋼盆,加入195CC飲用水,水溫 28度C,加入椰糖(紅色小包)充分攪拌均勻,加入酵母(原裝小包),滴入10滴甜菊糖,攪拌均勻備用(如果不害怕甜菊糖的後味,可
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇主要著重於補充前面所有談過的內容中,我認為值得再次提醒、詳談的部分
Thumbnail
NVIDIA公布財報後的結果,相信是讓不少人感到失望。不過我倒是認為這很正常,因為只有邏輯不好的人才會認為「NVIDIA公布財報等於股市上漲」。這次來談談8/29當天發生的細節,談談美股未來的方向
Thumbnail
細節一直都是決定一件事能不能做好的關鍵因素之一,所以從這篇開始我會談眾多細節。談談如何從細節看出主力的意圖、股市的漲跌
Thumbnail
有一天有位大神問我你知道npm yarn pnpm bun 之間的差別?我突然楞神一下!!!! 好吧我從未想過這個問題於是我開始研究 使用方式:與其他工具類似,通過命令行使用,但具有自己的一些特定命令和功能。 適合情境:目前在市場上使用較少,主要在一些追求性能和速度優化的專案中或者對於新技
Thumbnail
#政大美食 #JuicyBun 政大最知名漢堡專賣店-Juicy Bun Burger,多樣化西式餐點,搭配酥脆薯條及特製醬料,份量十足超美味,是美食沙漠中的少數綠洲,一到用餐時間總是座無虛席!招牌牛肉漢堡排超多汁,不會有腥臭味,漢堡麵包相當Q彈,我選雙重起司口味,口感超濕潤~薯條酥脆不油膩,不論
Thumbnail
安石的安時好日子❤ 無麵粉 無麩質〈小麥蛋白〉 純素 無奶 無蛋 不添加任何油脂 主粉包x3,原裝酵母x3,椰糖(紅包裝)x3,無鋁泡打粉x3,可以做三次,每次做6個麵包,共做18個麵包 三種口味配方 紅麴口味 紅麴米磨成粉10g 甜菊糖液體15滴 150CC飲用水 南瓜口味 南瓜粉10g 甜菊
Thumbnail
田安石的安時好日子❤ 無麵粉 無麩質〈小麥蛋白〉 純素 無奶無蛋 不添加任何油脂 只需要準備甜菊糖液〈Now Food 椰子,榛果,香草,太妃糖甜菊醣液都很適合〉 只烤25分鐘出爐 主粉包x3,酵母x3,椰糖(紅)x3,無鋁泡打粉x3,可以做三次,每次做6個麵包,共做18個麵包 步驟作法 烤箱要夠力
Thumbnail
田安石的安時好日子❤ 無麵粉 無麩質〈小麥蛋白〉 純素 無奶無蛋 不添加任何油脂 只需要準備甜菊糖液〈Now Food 椰子,榛果,香草,太妃糖甜菊醣液都很適合〉 只烤25分鐘出爐 主粉包x3,酵母x3,椰糖(紅)x3,無鋁泡打粉x3,可以做三次,每次做6個麵包,共做18個麵包 步驟作法 烤箱要夠力
Thumbnail
田安石的安時好日子❤ 無麵粉 無麩質 純素 無奶 不添加任何油脂 只需要準備甜菊糖液 25分鐘出爐 軟Q小圓包每一個3g淨碳水 步驟作法 取一鋼盆,加入195CC飲用水,水溫 28度C,加入椰糖(紅色小包)充分攪拌均勻,加入酵母(原裝小包),滴入10滴甜菊糖,攪拌均勻備用(如果不害怕甜菊糖的後味,可