چگونه من برنامه های Typescript Full-Stack را با TRPC و Next.JS 15 ساختم

هنگام ساختن برنامه های تمام پشته ، دستکاری مداوم بین انواع پس زمینه و جلو می تواند شما را کند کند. به همین دلیل من شروع به استفاده کردم TRPC– کتابخانه ای قدرتمند که به شما امکان می دهد ساختید API های ایمن از نوع پایان به پایان بدون طرحواره مانند استراحت یا graphql.
در این مقاله ، من به شما نشان خواهم داد چگونه از TRPC با Next.js 15 استفاده کردم برای ساختن یک برنامه کاملاً کاربردی کامل پرکار سریعتر و باهوش تر.
چرا TRPC؟
قبل از اینکه وارد کد شویم ، به همین دلیل من TRPC را دوست دارم:
- ایمنی از نوع کامل: انواع پس زمینه شما به طور خودکار در قسمت جلوی منعکس می شود
- بدون طرح های API: نقاط پایانی استراحت یا نمایش داده شد
- گردش کار سریعتر: فقط کارکردها را تعریف کنید و از آنها در مشتری استفاده کنید
پشته پروژه
- چارچوب: next.js 15 (روتر برنامه آماده)
- زبان: شرح
- یک ظاهر طراحی شده: پیچ و خم
- اعتبار سنجی: زود
- واکشی داده ها: پرس و جو
بیایید شروع کنیم
1. پروژه بعدی خود را ایجاد کنید.
npx create-next-app@latest trpc-fullstack-app --typescript
cd trpc-fullstack-app
2. بسته های مورد نیاز را نصب کنید
npm install @trpc/server @trpc/client @trpc/react-query @trpc/next zod
npm install @tanstack/react-query
3. Backend TRPC خود را تنظیم کنید
یک سرور TRPC ساده ایجاد کنید که بعداً بتوانیم گسترش دهیم.
src/server/api/trpc.ts
import { initTRPC } from "@trpc/server";
const t = initTRPC.create();
export const router = t.router;
export const publicProcedure = t.procedure;
4. روتر مثال را تعریف کنید
src/server/api/routers/example.ts
import { z } from "zod";
import { router, publicProcedure } from "../trpc";
export const appRouter = router({
hello: publicProcedure
.input(z.object({ name: z.string().optional() }))
.query(({ input }) => {
return {
greeting: `Hello, ${input.name ?? "world"}!`,
};
}),
});
5. روتر ریشه ایجاد کنید
src/server/api/root.ts
import { router } from "./trpc";
import { appRouter as exampleRouter } from "./routers/example";
export const appRouter = router({
example: exampleRouter,
});
export type AppRouter = typeof appRouter;
6. کنترل کننده API را تنظیم کنید
src/pages/api/trpc/[trpc].ts
import { createNextApiHandler } from "@trpc/server/adapters/next";
import { appRouter } from "@/server/api/root";
export default createNextApiHandler({
router: appRouter,
createContext: () => ({}),
});
7. تنظیم TRPC در سمت مشتری
src/utils/trpc.ts
import { createTRPCReact } from "@trpc/react-query";
import type { AppRouter } from "@/server/api/root";
export const trpc = createTRPCReact<AppRouter>();
8. برنامه خود را با ارائه دهندگان بسته بندی کنید
src/pages/_app.tsx
import { trpc } from "@/utils/trpc";
import { httpBatchLink } from "@trpc/client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import type { AppProps } from "next/app";
import { useState } from "react";
export default function MyApp({ Component, pageProps }: AppProps) {
const [queryClient] = useState(() => new QueryClient());
const [trpcClient] = useState(() =>
trpc.createClient({
links: [
httpBatchLink({
url: "/api/trpc",
}),
],
})
);
return (
<trpc.Provider client={trpcClient} queryClient={queryClient}>
<QueryClientProvider client={queryClient}>
<Component {...pageProps} />
QueryClientProvider>
trpc.Provider>
);
}
9. از TRPC در یک صفحه استفاده کنید
src/pages/index.tsx
import { trpc } from "@/utils/trpc";
export default function Home() {
const hello = trpc.example.hello.useQuery({ name: "Dhanian" });
if (!hello.data) return <p>Loading...p>;
return (
<div className="flex items-center justify-center h-screen text-2xl font-bold">
{hello.data.greeting}
div>
);
}
10. برنامه را اجرا کنید
npm run dev
http: // localhost: 3000 را باز کنید و باید ببینید:
سلام ، Dhanian!
پایان
همین است! شما به تازگی ایجاد کرده اید برنامه ایمن ، برنامه کامل با استفاده از TRPC و Next.js با حداقل تنظیم و تکثیر صفر انواع. این تنظیم باعث افزایش بهره وری من شده و اشکال زدایی را آسانتر کرده است.
اگر در حال ساخت برنامه های مدرن با TypeScript هستید ، TRPC یک تغییر دهنده بازی است ارزش امتحان کردن
بعدی؟
- Prisma را برای یک لایه پایگاه داده Typesafe اضافه کنید
- از مسیرها با تأیید اعتبار محافظت کنید
- ساخت و استقرار به Vercel
از این راهنما لذت بردید؟
شما می توانید از کار من پشتیبانی کنید یا کتابهای الکترونیکی حق بیمه من را در:
codewithdhanian.gumroad.com