Bun 入门到精通(一)——简介

Bun 是什么?

Bun 是用于 JavaScript 和 TypeScript 应用程序的多合一工具包。它作为一个名为 bun 的可执行文件提供。

其核心是 Bun 运行时,这是一个快速的 JavaScript 运行时,旨在替代 Node.js。它是用 Zig 编写的,并由 JavaScriptCore 提供支持,大大减少了启动时间和内存使用量。

Bun 的优点

速度

目前,Bun 流程的启动速度比 Node.js 快 4.5 倍;比 Deno 快 2 倍。

在这里插入图片描述

TypeScript 和 JSX support 支持

可以直接执行 .jsx.ts、和 .tsx 文件。

Bun 的转译器在执行之前将这些转换为普通的 JavaScript。

兼容 ESM 和 CommonJS

世界正在向 ES 模块(ESM)迈进,但 npm 上的数百万个包仍然需要 CommonJS。

Bun 推荐 ES 模块,仍然支持 CommonJS。

ESM 的目标是成为浏览器最好的模块化规范。

CMJ 的目标是成为服务器最好的模块化规范。

Web 标准的 API

Bun 实现了标准的 Web API,如:fetchWebSocketReadableStream

Bun 由 JavaScriptCore 引擎提供支持,该引擎由 Apple 为 Safari 开发,因此一些 API,如:HeadersURL 直接使用 Safari 的实现。

兼容 Node.js

除了支持 Node 式模块解析外,Bun 还旨在与内置的 Node.js 全局变量(processBuffer)和模块(pathfshttp,etc.)完全兼容。

当前还未做到完全兼容,详细看官网

安装 Bun

# 通过 npm 安装
npm i bun -g

# 查看版本
bun --version

# 升级版本
bun upgrade

# 通过 npm 卸载
npm uninstall bun -g

Bun 的命令

bun 命令行工具还实现了测试运行程序、脚本运行程序和 Node.js 兼容的包管理器,所有这些都比现有工具快得多,并且可以在现有的 Node.js 项目中使用,几乎不需要更改。

bun 的命令几乎和 npm 无异,极大程度的减少了学习成本。

命令说明
bun init初始化
bun <file>运行文件
bun run <script>运行脚本
bun build <file>打包文件
bun test <file>测试文件
bun link将当前包注册为一个“可链接”包
bun install安装所有包
bun add <pkg>安装包
bun remove <pkg>卸载包
bun update <pkg>更新包

Bun 还提供了 bunx,功能类似 npx

TypeScript 支持

# 安装 @types/bun 包
bun add -d @types/bun

配置 tsconfig.json 文件

{
  "compilerOptions": {
    // Enable latest features
    "lib": ["ESNext"],
    "target": "ESNext",
    "module": "ESNext",
    "moduleDetection": "force",
    "jsx": "react-jsx",
    "allowJs": true,

    // Bundler mode
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": true,
    "verbatimModuleSyntax": true,
    "noEmit": true,

    // Best practices
    "strict": true,
    "skipLibCheck": true,
    "noFallthroughCasesInSwitch": true,

    // Some stricter flags
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noPropertyAccessFromIndexSignature": true
  }
}

用 Bun 写一个服务器脚本

// server.js

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

console.log(`服务器启动在了 http://localhost:${server.port}`);
  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackson Mseven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值