Server Bundles
このコンテンツはまだ日本語訳がありません。
服务器包
Remix 通常会将您的服务器代码构建到一个公开单个请求处理程序函数的包中。但是,在某些情况下,您可能需要将路由树拆分为多个服务器包,这些服务器包会为部分路由公开一个请求处理程序函数。为了提供这种灵活性,Remix Vite 插件 支持serverBundles
选项,该选项是一种将路由分配给不同服务器包的函数。
提供的 serverBundles
函数针对树中的每个路由进行调用(不可寻址的路由除外,例如无路径布局路由),并返回您想要为其分配的服务器包 ID。这些包 ID 将用作服务器构建目录中的目录名称。
对于每条路由,此函数都会传递一个包含该路由的路由数组,称为路由分支
。这允许您为路由树的不同部分创建服务器包。例如,您可以使用它来创建一个单独的服务器包,其中包含特定布局路由内的所有路由:
branch
数组中的每个route
包含以下属性:
id
— 此路由的唯一 ID,其名称类似于其file
,但相对于应用程序目录且不带扩展名,例如app/routes/gists.$username.tsx
将具有routes/gists.$username
的id
。path
— 此路由用于匹配 URL 路径名的路径。file
— 此路由入口点的绝对路径。index
— 此路由是否为索引路由。
构建清单
构建完成后,Remix 将调用 Vite 插件的 buildEnd
钩子并传递 buildManifest
对象。如果您需要检查构建清单以确定如何将请求路由到正确的服务器包,这将非常有用。
使用服务器捆绑包时,构建清单包含以下属性:
serverBundles
— 将包 ID 映射到包的id
和file
的对象。routeIdToServerBundleId
— 将路由 ID 映射到其服务器包 ID 的对象。routes
— 将路由 ID 映射到路由元数据的路由清单。这可用于在 Remix 请求处理程序前面驱动自定义路由层。
或者,您可以启用 Vite 插件上的manifest
选项,将此构建清单对象作为构建目录中的.remix/manifest.json
写入磁盘。