# 内置与社区插件

URL: https://caijiao.org/fastify/plugins/builtin-community
Source: docs/fastify/plugins/builtin-community.md
Description: 了解 Fastify 的内置插件与社区插件生态，掌握如何选型与使用这些插件扩展应用能力。

Fastify 拥有强大的插件体系，既包含核心内置插件，也拥有丰富的社区维护插件，覆盖数据库、验证、静态资源、跨域等常见功能。

## 内置插件

Fastify 官方提供了一些由核心团队维护的插件，通常托管于 [`@fastify`](https://github.com/fastify) 组织下。这些插件在稳定性、性能和兼容性上都有保障。

常用内置插件包括：

| 插件名称 | 功能说明 |
|----------|----------|
| `@fastify/static` | 提供静态资源托管 |
| `@fastify/cors` | 支持跨域请求（CORS） |
| `@fastify/formbody` | 解析 URL 编码的表单提交数据 |
| `@fastify/jwt` | JWT 鉴权与签发 |
| `@fastify/swagger` | 自动生成 Swagger/OpenAPI 文档 |
| `@fastify/websocket` | 支持 WebSocket 通信 |
| `@fastify/env` | 环境变量校验与注入 |
| `@fastify/multipart` | 文件上传处理 |

### 示例：使用 `@fastify/cors`

```bash
npm install @fastify/cors
```

```js
const fastify = require('fastify')();
fastify.register(require('@fastify/cors'), {
  origin: '*',
});
```

## 社区插件

除了内置插件，Fastify 社区也维护了大量高质量插件，通常托管在 npm 上，并可在以下地址查找：

- 官方插件目录：https://fastify.dev/ecosystem/
- GitHub 上的 [`fastify/plugins`](https://github.com/fastify/plugins)
- npm 搜索关键字 `fastify-plugin`

### 示例：数据库插件

- `@fastify/mysql`
- `@fastify/mongodb`
- `@fastify/postgres`
- `fastify-typeorm-plugin`（第三方）
- `fastify-objectionjs`（第三方）

使用方式与内置插件类似，注册并传入配置：

```js
fastify.register(require('@fastify/mysql'), {
  promise: true,
  connectionString: 'mysql://user:pass@localhost/db',
});
```

## 插件选型建议

- **优先使用内置插件**：稳定、文档完善、更新及时。
- **查看维护状态**：GitHub 上最近是否有更新？是否有活跃 issue？
- **关注兼容性**：确保插件支持当前 Fastify 版本。
- **使用 fastify-plugin 包装**：保证作用域暴露和依赖管理。

## 插件生态的意义

- 加快开发速度：避免重复造轮子。
- 解耦应用结构：以插件为边界拆分功能模块。
- 丰富功能覆盖：从日志记录到 GraphQL 支持，生态涵盖广泛。

```txt
官方提供了完善的插件目录与开发指南，你也可以开发自己的插件并贡献到社区。
```
