Skip to content

📊 项目重构与优化报告 (Phase 3)

IMPORTANT

历史归档说明(2026-03-11):本文中涉及 Storybook 的目录与命令是当时阶段性记录。当前项目已统一迁移到 VitePress 组件文档链路。

日期:2026-03-06 工作:项目文件结构优化 + 业界标准化 状态:✅ 完成


📋 本轮优化概览

目标

将 vitePress 项目从杂乱的根目录结构优化到业界标准的分层架构,提高项目可维护性和扩展性。

成果

  • ✅ 完整的目录重构(从混乱到标准化)
  • ✅ 路径别名配置(类似 Next.js / Vite 项目)
  • ✅ 所有测试通过(34/34 ✅)
  • ✅ 生产构建成功 ✅
  • ✅ 向后兼容性保持完好

🏗️ 项目结构优化(Before → After)

优化前(混乱结构)

project-root/
├── GuideExample.tsx            ❌ React 源文件在根目录
├── GuideOverlay.tsx            ❌ 组件源文件在根目录
├── a.jsx, useGuide.ts          ❌ 源代码分散无序
├── front/
│   ├── components/             ✓ 有一定组织
│   └── knowledge/              ✓ 有一定组织
├── tests/
│   ├── *.spec.ts               ❌ E2E 和单元混合
│   └── useGuide.test.ts        ❌ 位置不清楚
├── .vitepress/                 ✓ 配置就位
└── 大量 .md 文件在根目录         ❌ 文档混乱无序

问题

  • 源代码分散,难以维护
  • 测试组织不清
  • 文档路径混乱
  • 新开发者快速导航困难
  • 不符合 TypeScript/Vite 项目规范

优化后(业界标准)

project-root/
├── src/                        ✅ 所有源代码
│   ├── components/             ✅ React 组件库
│   │   ├── Button/
│   │   ├── Select/
│   │   └── Form/
│   ├── hooks/                  ✅ 自定义 Hooks
│   │   └── useGuide.ts
│   ├── utils/                  ✅ 工具函数
│   ├── types/                  ✅ TypeScript 类型
│   └── ...

├── docs/                       ✅ VitePress 文档
│   ├── front/
│   │   ├── knowledge/          ✅ 知识库(向后兼容)
│   │   └── components/         ✅ 组件文档
│   ├── guide/                  ✅ 用户指南
│   ├── extra/                  ✅ 架构/优化文档
│   ├── PROJECT_STRUCTURE.md    ✅ 项目结构说明
│   └── index.md                ✅ 文档首页

├── tests/                      ✅ 测试组织
│   ├── unit/                   ✅ 单元测试
│   │   ├── useGuide.test.ts
│   │   ├── setup.ts
│   │   └── ...
│   ├── e2e/                    ✅ 端到端测试
│   │   ├── basic.spec.ts
│   │   ├── advanced-interactions.spec.ts
│   │   └── ...
│   └── fixtures/               ✅ 测试数据(可选)

├── public/                     ✅ 静态资源
├── .vitepress/                 ✅ VitePress 配置
├── .storybook/                 ✅ Storybook 配置

└── 配置文件(根目录)           ✅ 集中管理
    ├── tsconfig.json           ✅ 已更新
    ├── vitest.config.ts        ✅ 已更新
    ├── package.json
    └── ...

优势

  • ✅ 文件位置清晰,易于导航
  • ✅ 遵循业界标准(Next.js / Vite 风格)
  • ✅ 便于团队协作和新人上手
  • ✅ 扩展性强,易于添加新功能
  • ✅ 与现代工具链兼容

📝 具体改动清单

1. 源代码迁移 → src/

原路径新路径说明
front/components/*src/components/*React 组件库
useGuide.tssrc/hooks/useGuide.ts自定义 Hook
GuideExample.tsxsrc/components/GuideExample.tsx示例组件
GuideOverlay.tsxsrc/components/GuideOverlay.tsx覆盖层组件

2. 文档迁移 → docs/

原路径新路径说明
front/knowledge/docs/front/knowledge/知识库(向后兼容)
front/components/docs/front/components/组件文档
api-examples.mddocs/guide/api-examples.mdAPI 示例
ARCHITECTURE.mddocs/extra/ARCHITECTURE.md架构文档
ROADMAP.mddocs/extra/ROADMAP.md路线图

3. 测试重组 → tests/

原路径新路径说明
tests/*.spec.tstests/e2e/*.spec.tsE2E 测试
useGuide.test.tstests/unit/useGuide.test.ts单元测试
tests/setup.tstests/unit/setup.tsVitest 配置

4. 配置更新

tsconfig.json

typescript
// ✅ 新增路径别名(类似 Next.js)
"paths": {
  "@/*": ["src/*"],
  "@components/*": ["src/components/*"],
  "@hooks/*": ["src/hooks/*"],
  "@utils/*": ["src/utils/*"],
  "@types/*": ["src/types/*"]
}

// ✅ 更新 include
"include": [
  "src/**/*.ts",
  "src/**/*.tsx",
  "tests/**/*.ts",
  "tests/**/*.tsx"
]

vitest.config.ts

typescript
// ✅ 更新 setupFiles
setupFiles: ['./tests/unit/setup.ts'],

// ✅ 更新测试 glob
include: [
  'src/**/*.{test,spec}.{ts,tsx}',
  'tests/unit/**/*.{test,spec}.{ts,tsx}'
],

// ✅ 更新路径别名
resolve: {
  alias: {
    '@': path.resolve(__dirname, './src'),
    '@components': path.resolve(__dirname, './src/components'),
    '@hooks': path.resolve(__dirname, './src/hooks'),
  }
}

5. 代码更新

路径别名使用

typescript
// ❌ 旧的相对导入
import { useGuide } from '../../../useGuide';

// ✅ 新的别名导入
import { useGuide } from '@/hooks/useGuide';

修复 Web Vitals 导入

typescript
// ❌ onFID 已在 web-vitals v5 中废弃
import { onCLS, onFID, onFCP, onLCP, onTTFB } from 'web-vitals';

// ✅ 更新为 onINP(Interaction to Next Paint)
import { onCLS, onFCP, onLCP, onTTFB, onINP } from 'web-vitals';

✅ 验证和测试

单元测试

✓ Button component          12 tests ✅
✓ Select component          11 tests ✅
✓ useGuide hook             11 tests ✅
─────────────────────────────────
Total: 34/34 tests passed ✅
Duration: 2.34s
Coverage: 72%

构建验证

✓ building client + server bundles...
✓ rendering pages...
✓ generating sitemap...
✓ Build completed successfully!

路由验证

  • /front/knowledge/* ✅ 保持向后兼容
  • /front/components/* ✅ 保持向后兼容
  • /guide/* ✅ 新的指南页面
  • / ✅ 首页正常

📚 新增文档

docs/PROJECT_STRUCTURE.md

详细说明了新的项目结构:

  • 目录说明和用途
  • 导入路径规范
  • 文件分类指南
  • 最佳实践

使用:新团队成员应该首先阅读此文档了解项目组织。


🎯 为 Phase 4 做准备

已准备的基础设施

  1. ✅ 标准化的项目结构
  2. ✅ 路径别名配置完成
  3. ✅ 测试框架就位(可扩展)
  4. ✅ 构建系统验证无误
  5. ✅ 清晰的文档指引

下一步可立即开始的工作

短期(1-2 周)

□ Sentry 生产环境配置
  - 获取生产 DSN
  - 配置环境变量
  - 测试错误上报

□ 性能告警通知
  - 集成 Slack/Email
  - 设置告警钩子
  - 测试告警流程

□ 文档完善
  - 补充 src/ 中文件的说明
  - 更新团队 onboard 指南
  - 创建贡献者快速开始指南

中期(3-4 周)

□ 性能仪表板前端开发
  - 创建 Vue 组件展示 Web Vitals
  - 集成 Sentry API
  - 实现图表和告警面板

□ 自动化视觉测试
  - 选择工具(Percy / Chromatic)
  - 配置 Storybook 截图
  - CI 集成快照对比

□ 灰度发布系统
  - 实现分阶段发布脚本
  - 性能指标监控
  - 自动回滚机制

💡 关键改进对比

方面优化前优化后
文件定位需要四处搜索清晰的位置
代码组织混乱分散层级清晰
路径导入复杂相对路径简洁别名
测试分类混合在一起明确的 unit/e2e
文档查找根目录混乱结构化目录
新人上手需要大量指引自明的结构
IDE 导航困难直观快速
构建时间无缓存影响更优的缓存

🔄 向后兼容性

所有旧的 URL 路由保持不变:

  • /front/knowledge/* ✅ 继续工作
  • /front/components/* ✅ 继续工作
  • 已发布的文章链接 ✅ 无需修改

新用户可以使用更直观的新路由(可在下一次优化中实现)。


🎓 对团队的好处

  1. 快速适应:新成员能快速理解项目结构
  2. 代码质量:更好的组织促进高质量代码
  3. 维护性:清晰的分层结构易于维护
  4. 扩展性:添加新功能时位置明确
  5. 协作效率:减少冲突和沟通成本
  6. 工具集成:与现代工具链无缝配合

📖 推荐阅读顺序

  1. 本文档(当前)- 了解重构内容
  2. docs/PROJECT_STRUCTURE.md - 详细的目录说明
  3. QUICK-REFERENCE.md - 日常命令速查
  4. CONTRIBUTING.md - 代码贡献指南

📊 项目演进时间线

Phase 1 (完成): 测试和监控基础
  └─ 30 单元测试, 24+ E2E 测试, 错误追踪, Bundle 分析

Phase 2 (完成): 开发体验优化
  └─ Storybook 18+ 故事, 性能监控, CI/CD 优化

Phase 3 (完成): 项目结构和文件优化  ← YOU ARE HERE
  └─ src/, docs/, tests/ 标准化, 路径别名, 文档完善

Phase 4 (进行中): 开发工具和流程优化
  └─ 性能仪表板, 视觉回归测试, 灰度发布, A/B 测试

Phase 5-6: 数据智能和国际化

🚀 快速检查清单

在使用新结构时,确保:

  • [ ] 所有导入使用 @/ 别名而不是相对路径
  • [ ] src/ 中放置源代码
  • [ ] tests/ 中放置测试(分单元/E2E)
  • [ ] docs/ 中放置文档
  • [ ] public/ 中放置静态资源
  • [ ] 新组件遵循 src/components/ComponentName 结构
  • [ ] 新测试遵循相应的 tests/unit 或 tests/e2e 位置

版本:1.0 最后更新:2026-03-06 维护者:cmwrun 团队 状态:✅ 生产就绪

内容仅供学习参考,如有错误欢迎指正与 PR