什么是 tRPC?
tRPC 是一个基于 TypeScript 的全栈开发框架,旨在简化客户端与服务端之间的通信过程。它提供高效的类型安全,让你可以像调用本地函数一样调用远程 API。这种设计使得开发过程更加高效和安全。
tRPC 的主要特点
- 类型安全: tRPC 保证客户端和服务端之间的数据类型一致,避免类型不匹配导致的错误。
- 简化开发流程: 无需手动定义 schema 或生成代码,减少重复工作。
- 轻量且易于集成: tRPC 没有额外依赖,客户端体积小,适合现有项目。
- 丰富的功能: 支持 React.js、Next.js、Express.js 等适配器,并提供订阅和请求批处理等功能。
tRPC 的优势
- 提高开发效率: 通过自动类型推断和补全,减少手动编写类型定义的工作量。
- 增强类型安全性: 确保客户端和服务端的类型一致,减少运行时错误。
- 简化 API 开发流程: 不需要手动维护 schema 或生成代码。
使用 tRPC 的示例
以下是一个简单的 tRPC 服务器和客户端示例:
服务器端(使用 Next.js)
typescript
// server/api/routers/_app.ts
import * as trpc from '@trpc/server';
import * as trpcNext from '@trpc/server/adapters/next';
export const appRouter = trpc.router()
.query('greeting', {
async resolve() {
return {
message: 'Hello from tRPC!',
};
},
});
export default trpcNext.createNextApiHandler({
router: appRouter,
createContext: () => null,
});
客户端(使用 React)
typescript
// client/components/Greeting.tsx
import { trpc } from '../utils/trpc';
function Greeting() {
const greeting = trpc.useQuery(['greeting']);
if (!greeting.data) return <div>Loading...</div>;
return <div>{greeting.data.message}</div>;
}
export default Greeting;
使用 tRPC 的步骤
- 安装依赖:
bash
npm install @trpc/server @trpc/client @trpc/react
- 创建 tRPC 路由:
typescript
import * as trpc from '@trpc/server';
export const appRouter = trpc.router()
.query('example', {
async resolve() {
return { message: 'Hello from tRPC!' };
},
});
- 在客户端使用 tRPC:
typescript
import { trpc } from '../utils/trpc';
function Example() {
const example = trpc.useQuery(['example']);
if (!example.data) return <div>Loading...</div>;
return <div>{example.data.message}</div>;
}
通过这些示例,你可以快速开始使用 tRPC 构建类型安全的 API。tRPC 适合于任何需要高效、安全的 API 开发场景。