这篇文章记录一下用到的比较新的技术
BUN
1. Bun 是什么
Bun 是一个高性能的 JavaScript 运行时(JavaScript Runtime),定位上对标 Node.js + npm/yarn + esbuild/jest 的组合。
一句话定义:
Bun = JavaScript Runtime + Package Manager + Bundler + Test Runner(一体化)
由 Jarred Sumner 主导开发,核心目标是:速度、简化工具链、现代 JS 体验。
2. Bun 解决了什么问题
传统 Node.js 工具链的典型问题:
- 工具碎片化:
node + npm/yarn + webpack/esbuild + jest - 启动慢、安装慢
- CJS / ESM 历史包袱重
- 原生 API(fetch / Web 标准)支持不统一
Bun 的设计目标:
- 极快的启动速度
- 极快的依赖安装
- 默认现代 Web API
- 减少工具数量
3. 核心组成(非常重要)
3.1 JavaScript Runtime
- 使用 JavaScriptCore(Safari 同款引擎)
- 而不是 V8(Node / Deno)
特性:
-
原生支持:
fetchRequest / ResponseWebSocketReadableStream
- 同时兼容大部分 Node API(fs、path、process 等)
⚠️ 注意:并非 100% Node 兼容
3.2 内置 Package Manager(bun install)
Bun 把包管理器做进了 runtime:
bun install≈npm install/yarn install- 使用 二进制 lockfile(bun.lockb)
- 读取
package.json
特点:
- 极快(大量使用 mmap + 并行)
- 自动缓存
- 支持 workspace
- 支持 npm registry 生态
3.3 内置 Bundler
-
可替代:
- esbuild
- webpack(简单场景)
-
支持:
- TS / JSX / TSX
- Tree Shaking
- Code Splitting
-
常用于:
- 构建前端产物
- 打包 server-side 工具
3.4 内置 Test Runner
bun test
特性:
- Jest 风格 API(
describe / it / expect) - 原生跑 TS
- 启动极快
- 内置 mock / snapshot
4. Bun 的性能优势来自哪里
4.1 原因拆解
| 维度 | Bun | Node |
|---|---|---|
| JS 引擎 | JavaScriptCore | V8 |
| 启动模型 | 单一二进制 | 多层 bootstrap |
| I/O | Zig + 系统调用 | libuv |
| 包安装 | mmap + 并行 | JS + IO |
4.2 典型表现
bun install比 npm/yarn 快 数倍- 冷启动 Web Server 延迟显著低于 Node
- CLI 工具执行时间明显缩短
5. Bun 的常用命令(速查)
bun init # 初始化项目
bun install # 安装依赖
bun add axios # 添加依赖
bun remove axios # 删除依赖
bun run dev # 执行 scripts
bun test # 跑测试
bun build ./src # 构建
bun ./index.ts # 直接执行 TS
6. Bun vs Node / Deno(技术对比)
6.1 Bun vs Node.js
| 对比点 | Bun | Node |
|---|---|---|
| 成熟度 | 较新 | 非常成熟 |
| 生态兼容 | 高但非完全 | 100% |
| 性能 | 非常高 | 稳定 |
| 工具链 | 一体化 | 分散 |
| 企业落地 | 少 | 极多 |
结论:
👉 Bun 适合 新项目 / 工具链简化 / 性能敏感场景
👉 Node 仍是 生产主流
6.2 Bun vs Deno
| 对比点 | Bun | Deno |
|---|---|---|
| 引擎 | JavaScriptCore | V8 |
| npm 兼容 | 原生 | 后期补 |
| 权限模型 | 无 | 有(--allow-read) |
| 工具集成 | 强 | 中 |
| 理念 | 实用主义 | 安全优先 |
7. Bun 的典型使用场景
✅ 非常适合:
- CLI 工具
- 脚手架
- 内部工具
- 前端构建工具
- 本地开发服务器
⚠️ 谨慎使用:
- 强依赖 Node C++ Addon 的项目
- 大型生产后端(现阶段)
- 对 Node 行为高度依赖的老项目
8. Bun 的工程哲学(写笔记很好用)
- Performance first
- Web standards first
- One tool instead of many
- Prefer native over JS
9. 一句话总结(笔记结尾用)
Bun 是一个将 JavaScript Runtime、包管理、构建和测试高度整合的一体化工具链,以极致性能和现代 Web 标准为核心目标,但在成熟度和兼容性上仍需权衡。
如果你愿意,我可以下一步帮你整理:
- Bun 在真实项目中的落地方案
- Bun 迁移 Node 项目的 checklist
- Bun 的坑点与不兼容清单(很实用)
- Bun 在 monorepo / workspace 下的实践
Typescript
Kotlin
和ts一样,可自动识别类型,类型放后面
var a:Int = 1