Skip to content

生命周期 ​

可选文件:src/app.tsx / src/app.jsx。默认导出必须是 defineApp({...}) 的返回值。从 @vlian/app/runtime 导入,勿把 Node 配置注入浏览器。

tsx
import { defineApp, redirect } from '@vlian/app/runtime';

export default defineApp({
  async bootstrap({ signal }) {
    return { ready: true };
  },
  errorComponent: ({ error, reset }) => (
    <main>
      <p>{error.message}</p>
      <button type="button" onClick={reset}>
        重试
      </button>
    </main>
  ),
  notFoundComponent: () => <main>未找到页面</main>,
  async beforeNavigate({ location, bootstrap, signal }) {
    // throw redirect({ to: '/login' })
  },
});

字段 ​

字段说明
bootstrap启动前异步初始化;成功只执行一次
errorComponent路由错误 UI
notFoundComponent未匹配 UI
beforeNavigate进入/停留调用;preload 不调用

顺序 ​

挂载 → 加载 defineApp → bootstrap → Router 就绪 → 非 preload 导航执行 beforeNavigate → 渲染或错误页。

  • 重定向:throw redirect({ to })
  • 取消:signal abort,不落业务错误 UI
  • 连续 redirect 超过上限(MAX_REDIRECT_CHAIN)失败

精简版默认可用;完整壳需显式启用并配置私服。