ルーターのマージ
非公式ベータ版翻訳
このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →
すべてのAPIコードを同じファイルに記述すると管理が煩雑になることがあります。ルーターを分割して整理するには、複数のルーターを簡単にマージできます。
子ルーターとのマージ
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 ;
t.mergeRouters によるマージ
すべてのプロシージャを単一のフラットな名前空間で管理したい場合、代わりに t.mergeRouters を使用できます
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 ;
ルーターの動的読み込み
lazy関数を使用してルーターを動的に読み込むことが可能です。これはアプリケーションのコールドスタート時間を短縮するのに有効です。遅延読み込みされたルーターの使用方法は、通常のルーターと同様に操作でき、差異はありません。
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 ;