跳到主要內容

快速移動,絕不中斷。輕鬆建立端到端類型安全的 API。

體驗 TypeScript 推論的強大功能,提升生產力
適用於您的全端應用程式。

由以下單位支援

非常感謝所有贊助商的鼎力支持!

自動類型安全

進行伺服器端變更?TypeScript 會在您儲存檔案之前,警告您客戶端上的錯誤!

靈敏的 DX

tRPC 沒有建置或編譯步驟,表示沒有程式碼產生、執行時期膨脹或建置步驟。

與框架無關

相容於所有 JavaScript 框架和執行時期。很容易將它新增到您現有的專案。

自動完成

使用 tRPC 就如同使用 API 伺服器程式碼的 SDK,讓您對端點充滿信心。

程式包大小輕巧

tRPC 沒有任何依賴項,且客戶端佔用空間極小,因此非常輕巧。

內建電池

我們提供 React、Next.js、Express、Fastify、AWS Lambda、Solid、Svelte 等的轉接器。

使用簡單,擁有
無與倫比的開發人員體驗

使用 tRPC 快速輕鬆地開始建置類型安全的 API。

ts
const t = initTRPC.create();
 
const router = t.router;
const publicProcedure = t.procedure;
 
const appRouter = router({
greeting: publicProcedure
.input(z.object({ name: z.string() }))
.query((opts) => {
const { input } = opts;
const input: { name: string; }
 
return `Hello ${input.name}` as const;
}),
});
 
export type AppRouter = typeof appRouter;
ts
const t = initTRPC.create();
 
const router = t.router;
const publicProcedure = t.procedure;
 
const appRouter = router({
greeting: publicProcedure
.input(z.object({ name: z.string() }))
.query((opts) => {
const { input } = opts;
const input: { name: string; }
 
return `Hello ${input.name}` as const;
}),
});
 
export type AppRouter = typeof appRouter;

1

定義您的程序

建立 tRPC API 的第一步,是定義您的程序。

程序是我們用來建置後端的函數。它們是可組合的,可以是查詢、突變或訂閱。路由器包含多個程序。

在此程序中,我們使用 Zod 驗證器,以確保來自客戶端的輸入與我們的程序預期完全相同。我們也會從查詢傳回一個簡單的文字字串。

在檔案的結尾,我們匯出路由器的類型,以便我們可以在前端程式碼中使用它,只需幾分鐘。

ts
const { listen } = createHTTPServer({
router: appRouter,
});
// The API will now be listening on port 3000!
listen(3000);
ts
const { listen } = createHTTPServer({
router: appRouter,
});
// The API will now be listening on port 3000!
listen(3000);

2

建立您的 HTTP 伺服器

接下來,我們使用 appRouter 建立我們的 HTTP 伺服器。現在,我們有一個正在執行的 tRPC 伺服器!

tRPC 有許多轉接器,因此它可以滿足您的需求。Next.js、Express、Fetch API (Astro、Remix、SvelteKit、Cloudflare Workers 等)、Fastify、AWS Lambda 或純粹的 Node HTTP 伺服器。

ts
const trpc = createTRPCClient<AppRouter>({
links: [
httpBatchLink({
url: 'https://127.0.0.1:3000',
}),
],
});
 
const res = await trpc.greeting.query({ name: 'John' });
const res: `Hello ${string}`
ts
const trpc = createTRPCClient<AppRouter>({
links: [
httpBatchLink({
url: 'https://127.0.0.1:3000',
}),
],
});
 
const res = await trpc.greeting.query({ name: 'John' });
const res: `Hello ${string}`

3

連接您的客戶端並開始查詢!

現在伺服器正在執行,我們可以建立一個客戶端並開始查詢資料。

在建立客戶端時,我們傳遞 AppRouter 類型,以提供我們 TypeScript 自動完成和 Intellisense,它們與後端 API 相符,而不需要任何程式碼產生!

使用

tRPC 受到領先技術團隊的測試和信賴。

  • Algora
  • Cal.com
  • Documenso
  • Fintory
  • Interval
  • Netflix
  • Newfront
  • Ping.gg
  • Pleo
  • Snaplet
  • napo

您可能不需要傳統的 API

「我建立 tRPC 是為了讓人們透過移除傳統 API 層的需求來加快速度,同時仍然相信我們的應用程式在我們快速迭代時不會中斷。」

親自試用並告訴我們您的想法!

Alex/KATT

Alex/KATT

tRPC 的建立者

不要相信我們的話!

許多開發人員喜愛 tRPC 及其為他們帶來的功能。

t3dotgg

Theo - ping.gg

@t3dotgg

tRPC 提升了我們程式碼的品質、交付速度和開發人員的滿意度,這很難理解。我知道我大力推廣它,但說真的,請試試 @trpcio
ralex1993

R. Alex Anderson 🚀

@ralex1993

🤯 tRPC 10 讓 VS Code 的「變更所有出現」功能可以在 _跨越用戶端/伺服器邊界_ 的地方運作!在這個影片中,我使用「變更所有出現」功能重新命名一個程序輸入,而這個變更會傳播到整個應用程式中任何使用這個輸入的地方。🤩 cc @trpcio
kentcdodds

Kent C. Dodds 🌌

@kentcdodds

如果我還沒從 @remix_run 取得端到端類型安全性,我會 100% 非常認真地研究 @trpcio。如果你沒有使用 Remix,我建議你看看 👀
sockthedev

Sock, the dev 🧦

@sockthedev

如果你完全使用 TypeScript,你一定得為你的 API 使用 tRPC。沒有如果,沒有但是。tRPC 消除了前端和後端之間的界線。你可以專注於為你的應用程式建置功能。這是進入市場超高速模式的最佳工具。嫁給我 @alexdotjs 💍
leeb

Lee Byron

@leeb

聽到 @t3dotgg 和 @mxstbr 討論 #tRPC 和 @GraphQL,發現他們都同意這兩個都很棒,而且各有其適合的時機和場合 💖
jokull

Jökull Solberg

@jokull

tRPC 太瘋狂了。我正在建立 Stripe 整合 – 我從伺服器傳回 Stripe API 酬載,我取得了 React 元件的回應資料類型,甚至不需要儲存檔案,就好像我在前端而不是後端使用 Stripe 函式庫一樣。/cc @alexdotjs
christian_legge

Christian Legge

@christian_legge

昨天一整天都在學習和實作 @trpcio,真是太棒的投資了。我不敢相信我花了多少時間(閱讀:浪費)在驗證和剖析查詢和回應上!
TkDodo

Dominik 🇺🇦

@TkDodo

話雖如此,我們現在正在啟動一個製作專案,我們使用 @nextjs 搭配 @trpcio。它好到我甚至不知道從哪裡開始 🔥。可能是從 e2e 型別安全性開始 😍 還沒想太多關於客戶端狀態,但前者可能適用。
housecor

Cory House

@housecor

@trpcio 喜歡它。簡單、強大的類型。在單一儲存庫中使用 TS 時,感覺比純 REST 或 GraphQL 更優雅的選擇。
andersmellson

Anders Bech Mellson

@andersmellson

今天花時間玩 @trpcio v10,我正式愛上它 😍 附註:別告訴我老婆 🙊
grabbou

Mike | grabbou.eth 🚀

@grabbou

@t3dotgg @trpcio 完全正確。我每次寫程序時都會笑,因為它讓我想起過去有多麼困難。內建錯誤、類型化中間件(可以改變內容)、輸入驗證。這真是太棒了!
wikitable

Martin

@wikitable

💖 我贊助 @alexdotjs,因為 tRPC 幫助更快建構應用程式。github.com/sponsors/KATT?…

所有贊助者

我們非常感謝所有令人驚豔的 贊助者,他們幫助確保 tRPC 持續存在。