53d8ded7f6
上一版把首帧从登录页改成居中 Loading,消除了闪登录页,但用户仍感刷两次: 静态导出首帧无法知登录态 → 先渲染裸 Loading(无顶栏/导航)→ 再出现完整外壳 → 再拉 /me 填内容。顶栏在裸 Loading 到外壳间消失再出现,观感=整页重绘两次。 改:抽出可复用 appShell(content);mount 后引导仍进行(!ready)时,若本地有 refresh token,乐观渲染完整外壳(顶栏/导航就位,仅内容区转圈),没 token 才直接登录页。 于是顶栏/导航从乐观态到已登录态始终在位,只有内容区替换 → 不再整页重绘。 SSR 安全:!mounted(SSR + 首次客户端渲染)仍渲染中性 spinner(不读 localStorage), 与服务端 HTML 一致防水合不一致;mount 后才据 hasRefresh() 决定外壳/登录页。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>