让我们使用内置的 Bun.serve API 编写一个简单的 HTTP 服务器。首先,创建一个新目录。

  1. mkdir quickstart
  2. cd quickstart

运行 bun init 来建立一个新的项目。这是一个交互式工具;在本教程中,只需按回车键即可接受每个提示的默认答案。

  1. bun init
  2. bun init 可以帮助你建立一个最小的项目,并尝试猜测合理的默认值。随时按 ^C 退出。
  3. package name (quickstart):
  4. entry point (index.ts):
  5. Done! A package.json file was saved in the current directory.
  6. + index.ts
  7. + .gitignore
  8. + tsconfig.json (for editor auto-complete)
  9. + README.md
  10. To get started, run:
  11. bun run index.ts

由于我们的入口是一个 *.ts 文件,Bun 会为您生成一个 tsconfig.json 文件。如果您使用的是纯 JavaScript,则会生成一个 jsconfig.json 文件。

运行文件

打开 index.ts 文件并粘贴以下代码片段,它使用 Bun.serve 实现了一个简单的 HTTP 服务器。

  1. const server = Bun.serve({
  2. port: 3000,
  3. fetch(req) {
  4. return new Response("Bun!");
  5. },
  6. });
  7. console.log(`Listening on http://localhost:${server.port} ...`);

从命令行执行文件

  1. bun index.ts

访问 http://localhost:3000 来测试服务器。您应该看到一个简单页面,上面写着 “Bun!”。

运行脚本

Bun 还可以执行来自您的 package.json 中的 "scripts"。请添加以下脚本:

  1. {
  2. "name": "quickstart",
  3. "module": "index.ts",
  4. "type": "module",
  5. "scripts": {
  6. "start": "bun run index.ts"
  7. },
  8. "devDependencies": {
  9. "bun-types": "^0.7.0"
  10. }
  11. }

然后通过 bun run start 命令来执行它

  1. bun run start

性能方面- bun run 比 npm run 快大约 28 倍(6ms vs 170ms 的开销)。

安装第三方包

让我们通过安装一个包来使我们的服务器更有趣。首先安装 figlet 包及其类型声明。Figlet 是一个将字符串转换为 ASCII 艺术的实用程序。

  1. bun add figlet
  2. bun add -d @types/figlet # TypeScript users only

更新 index.ts 以在获取处理程序中使用 figlet

  1. import figlet from "figlet";
  2. const server = Bun.serve({
  3. fetch() {
  4. const body = figlet.textSync("Bun!");
  5. return new Response(body);
  6. return new Response("Bun!");
  7. },
  8. port: 3000,
  9. });

重启服务器并刷新页面。您应该看到一个新生成的 ASCII 艺术横幅。