教程 fastify tutorial

创建 TS 项目

Fastify 完美支持 TypeScript,可以轻松将 TypeScript 集成到 Fastify 项目中。以下是如何在 Fastify 中创建一个 TypeScript 项目的详细步骤。

1. 初始化项目

首先,使用 npm init 初始化一个新的 Node.js 项目,并安装必要的依赖:

bash
mkdir fastify-ts-project
cd fastify-ts-project
npm init -y

接下来,安装 Fastify 和 TypeScript 相关依赖:

bash
npm install fastify
npm install typescript ts-node @types/node --save-dev
  • fastify: Fastify 框架的核心包。
  • typescript: TypeScript 编译器。
  • ts-node: 允许直接运行 TypeScript 文件的工具。
  • @types/node: Node.js 的类型定义文件。

2. 配置 TypeScript

创建一个 tsconfig.json 文件,配置 TypeScript 编译选项:

bash
npx tsc --init

然后,修改 tsconfig.json 文件,确保设置正确:

json
{
  "compilerOptions": {
    "target": "ES2020",                // 设置目标 ECMAScript 版本
    "module": "CommonJS",              // 使用 CommonJS 模块
    "strict": true,                    // 启用严格类型检查
    "esModuleInterop": true,           // 允许默认导入非 ES6 模块
    "skipLibCheck": true,              // 跳过库的类型检查
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist",                // 编译后的文件输出目录
    "baseUrl": ".",                    // 设置基础目录
    "paths": {
      "*": ["node_modules/*"]          // 配置路径映射
    }
  },
  "include": [
    "src/**/*.ts"                       // 包含 src 文件夹下的所有 .ts 文件
  ],
  "exclude": [
    "node_modules"                      // 排除 node_modules 文件夹
  ]
}

说明

  • outDir: 编译后输出的文件夹路径,通常设置为 dist 目录。
  • include: 包含需要编译的 TypeScript 文件。

3. 创建 Fastify 应用

在 src 目录下创建一个 index.ts 文件,并编写一个简单的 Fastify 服务器:

bash
mkdir src
touch src/index.ts

然后在 src/index.ts 中编写以下代码:

typescript
import fastify from 'fastify';

const app = fastify();

app.get('/', async (request, reply) => {
  return { hello: 'world' };
});

app.listen(3000, (err, address) => {
  if (err) {
    app.log.error(err);
    process.exit(1);
  }
  app.log.info(`Server listening at ${address}`);
});

这段代码创建了一个简单的 Fastify 服务器,当访问根路径时返回 { hello: 'world' }。

4. 添加开发脚本

在 package.json 中,添加以下开发脚本,以便使用 ts-node 启动项目:

json
{
  "scripts": {
    "dev": "ts-node src/index.ts",
    "build": "tsc",
    "start": "node dist/index.js"
  }
}
  • dev: 使用 ts-node 启动 TypeScript 项目,适用于开发环境。
  • build: 编译 TypeScript 项目。
  • start: 启动编译后的 JavaScript 项目。

5. 运行项目

通过以下命令启动 Fastify 项目:

bash
npm run dev

访问 http://localhost:3000,你应该会看到返回的 JSON 响应:

json
{
  "hello": "world"
}

6. 编译 TypeScript 项目

在开发完成后,你可以使用 npm run build 编译 TypeScript 文件:

bash
npm run build

这会将 src 目录中的 .ts 文件编译到 dist 目录中。然后,你可以使用 npm run start 来启动编译后的 JavaScript 项目。

7. 使用类型定义和装饰器

为了提升开发体验,你可以使用 Fastify 的类型定义来增强 TypeScript 项目的类型检查。例如,定义路由处理函数时,你可以使用 TypeScript 类型来确保请求和响应对象的类型安全:

typescript
import fastify, { FastifyRequest, FastifyReply } from 'fastify';

const app = fastify();

interface MySchema {
  name: string;
}

app.post('/greet', async (request: FastifyRequest<{ Body: MySchema }>, reply: FastifyReply) => {
  const { name } = request.body;
  return { greeting: `Hello, ${name}` };
});

app.listen(3000, (err, address) => {
  if (err) {
    app.log.error(err);
    process.exit(1);
  }
  app.log.info(`Server listening at ${address}`);
});

在上面的代码中,FastifyRequest<{ Body: MySchema }> 用于定义请求体的数据类型 MySchema,确保传入的数据符合预期。

总结

通过上述步骤,你可以轻松创建一个支持 TypeScript 的 Fastify 项目。借助 TypeScript 的静态类型检查和 Fastify 高性能的框架,你可以在开发过程中获得更好的开发体验和更高的执行效率。