perf: 子标签页按需加载(代码与元素懒加载)

原 v-show + 静态 import 导致三个子标签页的组件代码全部打进 MobileGame
chunk,且首屏即渲染全部(排行榜 onMounted 立即发 AJAX、视频元数据加载)。

改为:
- 三个标签页内容拆为独立组件 TeamLeaderboardTab/IterationsTab/ExperimentTab
- MobileGame 用 defineAsyncComponent + 动态 import,Vite 拆成独立 chunk
- v-if + Suspense:未激活的标签页组件根本不挂载(不发 AJAX、不渲染)
构建产物可见三个独立 chunk;headless 验证:默认团队页仅加载 team chunk,
点迭代记录才加载 IterationsTab chunk,点实验才加载 ExperimentTab chunk。
This commit is contained in:
Zikai
2026-07-12 15:44:39 +00:00
parent 88979a68c2
commit b3556b8639
4 changed files with 129 additions and 77 deletions

View File

@@ -0,0 +1,17 @@
<script setup>
import { useI18n } from 'vue-i18n'
import VersionTimeline from './VersionTimeline.vue'
const { locale } = useI18n({ useScope: 'global' })
const L = (zh, en) => (locale.value === 'zh-CN' ? zh : en)
</script>
<template>
<div class="tab-iterations">
<h2 class="section-title">
<small>{{ L('版本演进', 'Version History') }}</small>
{{ L('迭代记录', 'Iteration Record') }}
</h2>
<VersionTimeline />
</div>
</template>