
سلام سلام میخوام تجربه ام رو از استفاده trpc باهاتون در میون بزارم
به طور کلی tRPC یه پکیج جذاب برای ارتباط بدون دردسر هست، که با تایپ اسکریپت کار میکنه. سبک کاریش این شکلیه که میاد route های بک اند رو تبدیل به تایپ میکنه و اون هارو در فرانت اند استفاده میکنه و به این قابلیتش اصطلاحا میگن typesafe
خب آخه این چه سوالیه ؟
npm install @trpc/server @trpc/client # or yarn add @trpc/server @trpc/client
import { initTRPC } from '@trpc/server'; const t = initTRPC.create(); export const router = t.router; export const publicProcedure = t.procedure;
import { db } from './db'; import { publicProcedure, router } from './trpc';
const appRouter = router({ userList: publicProcedure.query(async () => { const users = await db.user.findMany(); return users; }), }); export type AppRouter = typeof appRouter;
const server = createHTTPServer({ router: appRouter, }); server.listen(3000);
import { createTRPCProxyClient, httpBatchLink } from '@trpc/client'; import type { AppRouter } from './server'; const trpc = createTRPCProxyClient<AppRouter>({ links: [ httpBatchLink({ url: 'http://localhost:3000', }), ], }); const user = await trpc.userList.query();
به همین خوشگلی بک اند رو تعریف کردم و اومدم از روی تایپی که برای روت های بک اند بود رابط بک اند رو در فرانت اند ساختم و الان میتونم خیلی خوشگل به بک اندم متصل بشم.
فقط برای این بدونین httpBatchLink فقط برای ارتباط بر پایه rest هستش.
و ما چیزای جذابی مثل createWSClient که برای ارتباط بر پایه وب سوکت هست رو هم داریم.
قابلیت های جذاب tRPC به همین جا ختم نمیشه
خیلی قابلیت های باحال تری داره پس پیشنهاد میکنم خودتون یه سر به داکیومنتش بزنین.
به طور کلی اگر بخوام راجب این پکیج نظری بدم باید بگم از بهترین و تمیز ترین پکیج ها توی سبک کاری خودش هست اما پکیج فرانت اندش هنوز خیلی جای کار داره (با اینکه production ready هستش).
مثلا مباحثی مثل Error Handling رو خیلی سخت میشه فهمید، یا درخواست های فرانت اند retry pattern ندارن.
بنظرم چند چیز رو خیلی برای توسعه دهنده راحت کرده:
خیلی خوشحال میشم اگر نقد و بررسی دارین یا پکیج دیگه ای دیدین که توی این سبک حرفی برای گفتن داره تو کامنت ها بهم بگین.