برنامه نویسی

چگونه من برنامه های 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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا