Bun 1.0 初試

閱讀時間約 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

2會員
4內容數
簡單的了解一個關於程式相關的主題
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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滴甜菊糖,攪拌均勻備用(如果不害怕甜菊糖的後味,可