自動類型安全
進行伺服器端變更?TypeScript 會在您儲存檔案之前,警告您客戶端上的錯誤!
靈敏的 DX
tRPC 沒有建置或編譯步驟,表示沒有程式碼產生、執行時期膨脹或建置步驟。
與框架無關
相容於所有 JavaScript 框架和執行時期。很容易將它新增到您現有的專案。
自動完成
使用 tRPC 就如同使用 API 伺服器程式碼的 SDK,讓您對端點充滿信心。
程式包大小輕巧
tRPC 沒有任何依賴項,且客戶端佔用空間極小,因此非常輕巧。
內建電池
我們提供 React、Next.js、Express、Fastify、AWS Lambda、Solid、Svelte 等的轉接器。
ts
constt =initTRPC .create ();constrouter =t .router ;constpublicProcedure =t .procedure ;constappRouter =router ({greeting :publicProcedure .input (z .object ({name :z .string () })).query ((opts ) => {const {input } =opts ;return `Hello ${input .name }` asconst ;}),});export typeAppRouter = typeofappRouter ;
ts
constt =initTRPC .create ();constrouter =t .router ;constpublicProcedure =t .procedure ;constappRouter =router ({greeting :publicProcedure .input (z .object ({name :z .string () })).query ((opts ) => {const {input } =opts ;return `Hello ${input .name }` asconst ;}),});export typeAppRouter = typeofappRouter ;
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
consttrpc =createTRPCClient <AppRouter >({links : [httpBatchLink ({url : 'https://127.0.0.1:3000',}),],});constres = awaittrpc .greeting .query ({name : 'John' });
ts
consttrpc =createTRPCClient <AppRouter >({links : [httpBatchLink ({url : 'https://127.0.0.1:3000',}),],});constres = awaittrpc .greeting .query ({name : 'John' });
3
連接您的客戶端並開始查詢!
現在伺服器正在執行,我們可以建立一個客戶端並開始查詢資料。
在建立客戶端時,我們傳遞 AppRouter
類型,以提供我們 TypeScript 自動完成和 Intellisense,它們與後端 API 相符,而不需要任何程式碼產生!
「我建立 tRPC 是為了讓人們透過移除傳統 API 層的需求來加快速度,同時仍然相信我們的應用程式在我們快速迭代時不會中斷。」
親自試用並告訴我們您的想法!
Alex/KATT
tRPC 的建立者

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

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

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

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

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

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

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

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

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

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

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

Martin
@wikitable
💖 我贊助 @alexdotjs,因為 tRPC 幫助更快建構應用程式。github.com/sponsors/KATT?…
所有贊助者
我們非常感謝所有令人驚豔的 贊助者,他們幫助確保 tRPC 持續存在。