Fusion de routeurs
Traduction Bêta Non Officielle
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Écrire tout le code d'API dans un même fichier peut devenir peu pratique. Il est facile de fusionner des routeurs ensemble afin de les diviser.
Fusion avec des routeurs enfants
routers/user.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constuserRouter =router ({list :publicProcedure .query (() => {// [..]return [];}),});
routers/user.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constuserRouter =router ({list :publicProcedure .query (() => {// [..]return [];}),});
routers/post.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constpostRouter =router ({create :publicProcedure .input (z .object ({title :z .string (),}),).mutation ((opts ) => {const {input } =opts ;// [...]}),list :publicProcedure .query (() => {// ...return [];}),});
routers/post.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constpostRouter =router ({create :publicProcedure .input (z .object ({title :z .string (),}),).mutation ((opts ) => {const {input } =opts ;// [...]}),list :publicProcedure .query (() => {// ...return [];}),});
routers/_app.tstsimport {router } from '../trpc';import {userRouter } from './user';import {postRouter } from './post';constappRouter =router ({user :userRouter ,post :postRouter ,});appRouter .user appRouter .post export typeAppRouter = typeofappRouter ;
routers/_app.tstsimport {router } from '../trpc';import {userRouter } from './user';import {postRouter } from './post';constappRouter =router ({user :userRouter ,post :postRouter ,});appRouter .user appRouter .post export typeAppRouter = typeofappRouter ;
Fusion avec t.mergeRouters
Si vous préférez avoir toutes vos procédures dans un seul espace de noms plat, vous pouvez utiliser t.mergeRouters à la place.
routers/user.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constuserRouter =router ({userList :publicProcedure .query (() => {// [..]return [];}),});
routers/user.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constuserRouter =router ({userList :publicProcedure .query (() => {// [..]return [];}),});
routers/post.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constpostRouter =router ({postCreate :publicProcedure .input (z .object ({title :z .string (),}),).mutation ((opts ) => {const {input } =opts ;// [...]}),postList :publicProcedure .query (() => {// ...return [];}),});
routers/post.tstsimport {router ,publicProcedure } from '../trpc';import {z } from 'zod';export constpostRouter =router ({postCreate :publicProcedure .input (z .object ({title :z .string (),}),).mutation ((opts ) => {const {input } =opts ;// [...]}),postList :publicProcedure .query (() => {// ...return [];}),});
routers/_app.tstsimport {mergeRouters } from '../trpc';import {userRouter } from './user';import {postRouter } from './post';constappRouter =mergeRouters (userRouter ,postRouter );export typeAppRouter = typeofappRouter ;
routers/_app.tstsimport {mergeRouters } from '../trpc';import {userRouter } from './user';import {postRouter } from './post';constappRouter =mergeRouters (userRouter ,postRouter );export typeAppRouter = typeofappRouter ;
Chargement dynamique de routeurs
Vous pouvez utiliser la fonction lazy pour charger dynamiquement vos routeurs. Cela peut être utile pour réduire les démarrages à froid de votre application. Il n'y a aucune différence dans la manière dont vous utilisez le routeur après son chargement paresseux par rapport à un routeur normal.
routers/greeting.tstsimport {router ,publicProcedure } from '../trpc';export constgreetingRouter =router ({hello :publicProcedure .query (() => 'world'),});
routers/greeting.tstsimport {router ,publicProcedure } from '../trpc';export constgreetingRouter =router ({hello :publicProcedure .query (() => 'world'),});
routers/user.tstsimport {router ,publicProcedure } from '../trpc';export constuserRouter =router ({list :publicProcedure .query (() => ['John', 'Jane', 'Jim']),});
routers/user.tstsimport {router ,publicProcedure } from '../trpc';export constuserRouter =router ({list :publicProcedure .query (() => ['John', 'Jane', 'Jim']),});
routers/_app.tstsimport {lazy } from '@trpc/server';import {router } from '../trpc';export constappRouter =router ({// Option 1: Short-hand when the module has exactly 1 router exportedgreeting :lazy (() => import('./greeting.js')),// Option 2: if exporting more than 1 routeruser :lazy (() => import('./user.js').then ((m ) =>m .userRouter )),});export typeAppRouter = typeofappRouter ;
routers/_app.tstsimport {lazy } from '@trpc/server';import {router } from '../trpc';export constappRouter =router ({// Option 1: Short-hand when the module has exactly 1 router exportedgreeting :lazy (() => import('./greeting.js')),// Option 2: if exporting more than 1 routeruser :lazy (() => import('./user.js').then ((m ) =>m .userRouter )),});export typeAppRouter = typeofappRouter ;