1. TanStack Router 的 Code Splitting(lazy + route.preload)
TanStack Router 如何通过 lazy 与 route.preload 实现代码分割?
- 路由级 code splitting 与按需加载
- preload 提前加载路由代码
- 与 Suspense 的配合
TanStack Router 支持 route.lazy 或基于 Route.lazy 的懒加载,把路由的组件与 loader 拆成独立 chunk,导航到该路由时才加载,降低首屏体积。route.preload 指定在链接 hover/进入视口等时机预先加载该路由 chunk,让用户点击时模块已就绪实现即时导航。配合 Suspense 挂起未加载的 chunk。工程价值是大型应用按路由拆分,首屏只加载当前路由代码。
lazy 是"用到才加载",preload 是"提前加载将要用的",两者结合兼顾体积与导航速度。
const route = createRoute({ path: '/dashboard', lazy: () => import('./dashboard.lazy') });