目录结构分析.md 14.6 KB

项目目录结构分析

最后更新: 2026-02-09 项目根目录: /Users/huyirui/program/itomix/git/map-demo

完整目录树

map-demo/
├── public/                      # 静态资源目录
├── docs/                        # 项目文档(新增)
│   ├── 项目架构分析/
│   ├── 功能模块分析/
│   ├── 注意事项与陷阱/
│   └── 开发指南/
├── src/                         # 源代码目录
│   ├── api/                     # API 接口定义
│   │   ├── B/                   # B端(企业端)API
│   │   │   ├── audit.js         # 审计相关
│   │   │   ├── kg.js            # 卡片相关?
│   │   │   └── localism.js      # 本土化相关
│   │   ├── C/                   # C端(用户端)API
│   │   │   ├── book.js          # 预订相关
│   │   │   ├── donate.js        # 捐赠相关
│   │   │   ├── kg.js            # 卡片相关?
│   │   │   ├── me.js            # 个人中心
│   │   │   ├── perf.js          # 性能相关?
│   │   │   └── prod.js          # 产品相关
│   │   ├── wx/                  # 微信相关 API
│   │   │   ├── config.js        # 微信配置
│   │   │   ├── jsApiList.js     # JS API 列表
│   │   │   └── pay.js           # 微信支付
│   │   ├── checkin.js           # 打卡 API
│   │   ├── common.js            # 通用 API(短信、上传、Token)
│   │   ├── fn.js                # API 包装器(错误处理)
│   │   └── map.js               # 地图数据 API
│   ├── assets/                  # 资源文件
│   │   ├── css/                 # 全局样式
│   │   ├── images/              # 图片资源
│   │   ├── mock/                # Mock 数据
│   │   │   ├── routes.js        # 路由 Mock 数据
│   │   │   ├── video_list.js    # 视频列表 Mock
│   │   │   └── video_list1.js   # 视频列表 Mock 1
│   │   └── styles/              # 样式文件
│   │       └── base.less        # 基础样式(全局注入)
│   ├── common/                  # 通用代码
│   │   ├── alert.js             # 弹窗提示
│   │   ├── inner_router.js      # 内部路由
│   │   ├── map_data.js          # 地图数据
│   │   ├── max.js               # 最大值处理?
│   │   ├── members.js           # 成员管理
│   │   ├── mixin.js             # Vue 混入
│   │   ├── my_router.js         # 自定义路由
│   │   ├── tool.js              # 工具函数
│   │   ├── yard.js              # 院落相关
│   │   └── vueuse.js            # VueUse 封装
│   ├── components/              # 公共组件
│   │   ├── Floor/               # 楼层平面图组件
│   │   │   ├── index.vue        # 主组件
│   │   │   ├── pin.js           # 标记点
│   │   │   └── svgIcon.vue      # SVG 图标
│   │   ├── VRViewer/            # VR 全景查看器
│   │   │   └── index.vue
│   │   ├── audioBackground.vue  # 背景音频(单模式)
│   │   ├── audioBackground1.vue # 背景音频(备用)
│   │   ├── audioList.vue        # 音频列表(播放列表模式)
│   │   ├── InfoWindowLite.vue   # 信息窗口(轻量版)
│   │   ├── InfoWindowWarn.vue   # 信息窗口(警告版)
│   │   ├── InfoWindowYard.vue   # 信息窗口(院落版)
│   │   ├── InfoPopupLite.vue    # 信息弹窗(轻量版)
│   │   └── InfoPopupWarn.vue    # 信息弹窗(警告版)
│   ├── hooks/                   # Vue Hooks
│   │   ├── injectionSymbols.js  # 注入符号
│   │   ├── useContext.js        # 上下文 Hook
│   │   ├── useDebounce.js       # 防抖 Hook
│   │   ├── useFlowFn.js         # 流程函数 Hook
│   │   ├── useGo.js             # 跳转 Hook
│   │   └── useKeepAlive.js      # Keep-Alive Hook
│   ├── packages/                # 多页面应用包(已废弃)
│   │   ├── mono1/               # 子应用 1
│   │   │   ├── App.vue
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   ├── router.js
│   │   │   └── views/
│   │   │       └── index.vue
│   │   └── mono2/               # 子应用 2
│   │       ├── App.vue
│   │       ├── index.html
│   │       ├── main.js
│   │       ├── router.js
│   │       └── views/
│   │           └── index.vue
│   ├── router/                  # 路由配置
│   │   ├── routes/              # 路由模块
│   │   │   └── modules/
│   │   │       └── auth/        # 认证路由
│   │   │           └── index.js
│   │   └── methods/             # 路由方法(可能不存在)
│   ├── settings/                # 设置
│   │   ├── componentSetting.js  # 组件设置
│   │   └── designSetting.js     # 设计设置
│   ├── store/                   # Pinia 状态管理
│   │   ├── index.js             # 主 Store
│   │   └── test.js              # 测试 Store
│   ├── test/                    # 测试
│   │   └── mocha/
│   │       └── test.js          # Mocha 测试
│   ├── utils/                   # 工具函数
│   │   ├── MonitorKeyboard.js   # 键盘监控
│   │   ├── TileCutter.js        # 瓦片切割
│   │   ├── axios.js             # Axios 实例
│   │   ├── generateIcons.js     # 生成图标
│   │   ├── generateModules.js   # 生成模块
│   │   ├── generatePackage.js   # 生成包
│   │   ├── generateRoute.js     # 生成路由
│   │   ├── share.js             # 分享工具
│   │   ├── tools.js             # 通用工具
│   │   └── vconsole.js          # VConsole 调试
│   ├── views/                   # 页面组件
│   │   ├── bieyuan/             # 别院模块
│   │   │   ├── index.vue        # 别院首页
│   │   │   ├── info_w.vue       # 信息页面(带警告)
│   │   │   └── scan.vue         # 扫码页面
│   │   ├── by/                  # BY 模块
│   │   │   ├── index.vue        # BY 首页
│   │   │   ├── info.vue         # 信息页面
│   │   │   ├── info_w.vue       # 信息页面(带警告)
│   │   │   └── scan.vue         # 扫码页面
│   │   ├── checkin/             # 打卡模块
│   │   │   ├── index.vue        # 打卡首页
│   │   │   ├── info.vue         # 打卡信息
│   │   │   ├── info_w.vue       # 打卡信息(带警告)
│   │   │   └── scan.vue         # 扫码打卡
│   │   ├── xys/                 # XYS 模块
│   │   ├── about.vue            # 关于页面
│   │   ├── auth.vue             # 认证页面
│   │   ├── info.vue             # 信息页面
│   │   ├── noticeList.vue       # 通知列表
│   │   └── test.vue             # 测试页面
│   ├── App.vue                  # 根组件
│   ├── constant.js              # 常量定义
│   ├── main.js                  # 入口文件
│   ├── route.js                 # 路由配置(辅助)
│   ├── router.js                # 路由配置(主)
│   ├── theme-vars.js            # 主题变量
│   └── auto-imports.d.ts        # 自动导入类型定义
├── build/                       # 构建配置
│   └── proxy.js                 # 代理配置
├── .history/                    # 文件历史(Git 记录)
├── .env                         # 环境变量(基础)
├── .env.development             # 环境变量(开发)
├── .env.production              # 环境变量(生产)
├── .eslintrc.js                 # ESLint 配置
├── .gitignore                   # Git 忽略文件
├── index.html                   # 主入口 HTML
├── package.json                 # 项目依赖
├── vite.config.js               # Vite 配置
├── cypress.json                 # Cypress 配置
├── CLAUDE.md                    # Claude Code 项目指南
├── README.md                    # 项目说明
└── tsconfig.json                # TypeScript 配置

核心目录说明

1. src/api/ - API 接口层

职责: 定义所有与后端交互的 API 接口

结构:

  • B/: B端(企业/管理端)接口
  • C/: C端(用户/客户端)接口
  • wx/: 微信相关接口(配置、支付)
  • common.js: 通用接口(短信、上传、Token)
  • fn.js: API 包装器,统一错误处理

关键文件:

  • fn.js: 核心 API 包装器,处理响应验证和错误
  • map.js: 地图数据接口
  • checkin.js: 打卡功能接口

2. src/components/ - 公共组件

职责: 可复用的 Vue 组件

核心组件:

  • Floor/: 楼层平面图组件(SVG 交互)
  • VRViewer/: 360° 全景查看器
  • audioBackground.vue: 背景音频播放(单模式)
  • audioList.vue: 音频列表播放(列表模式)
  • InfoWindow*.vue: 各种样式的信息窗口

3. src/views/ - 页面组件

职责: 页面级组件

模块划分:

  • bieyuan/: 别院模块
  • by/: BY 模块
  • checkin/: 打卡模块
  • xys/: XYS 模块

共同页面:

  • about.vue: 关于页面
  • auth.vue: 认证页面
  • info.vue: 信息页面
  • noticeList.vue: 通知列表
  • test.vue: 测试页面

4. src/store/ - 状态管理

职责: Pinia 全局状态

核心状态:

  • keepPages: Keep-Alive 缓存页面列表
  • 音频播放状态(单模式和播放列表模式)
  • 滚动位置状态
  • 用户认证状态

5. src/router/ - 路由配置

职责: Vue Router 路由定义

特点:

  • 使用 Hash 模式 (createWebHashHistory('/index.html'))
  • 动态路由生成(从 Mock 数据加载)
  • 模块化路由(routes/modules/

6. src/utils/ - 工具函数

职责: 通用工具函数和辅助方法

核心工具:

  • axios.js: Axios 实例(拦截器配置)
  • tools.js: 通用工具函数
  • share.js: 微信分享工具
  • generateRoute.js: 动态路由生成

7. src/common/ - 通用代码

职责: 跨层级的通用代码

核心文件:

  • map_data.js: 地图数据处理
  • mixin.js: Vue 混入
  • alert.js: 弹窗提示

8. src/packages/ - 多页面应用(已废弃)

状态: 代码已存在,但未在构建配置中启用

说明:

  • mono1/, mono2/: 两个独立的子应用
  • vite.config.js 中相关配置已注释

9. build/ - 构建配置

职责: Vite 构建相关配置

核心文件:

  • proxy.js: 代理配置生成器

文件命名规范

Vue 组件

页面组件: index.vue(放在模块目录下) 公共组件: PascalCase.vue(多单词,大驼峰)

示例:

  • audioList.vue
  • VRViewer/index.vue
  • InfoWindowLite.vue

JavaScript 文件

工具函数: camelCase.js(小驼峰) 常量文件: constant.js 配置文件: *.config.js

示例:

  • tools.js
  • useDebounce.js
  • vite.config.js

样式文件

全局样式: base.less 组件样式: 与组件同名的 .less 文件

目录组织原则

1. 按功能划分

  • api/: 按业务端(B/C)和功能(wx/map)划分
  • views/: 按业务模块(bieyuan/by/checkin/xys)划分
  • components/: 按功能组件(Floor/VRViewer)划分

2. 按层级划分

  • src/: 源代码根目录
  • public/: 静态资源(不经过 Vite 处理)
  • build/: 构建脚本和配置
  • docs/: 项目文档

3. 特殊目录

  • .history/: Git 文件历史(本地编辑器生成)
  • node_modules/: 依赖包(.gitignore)
  • dist/: 构建输出(.gitignore)

建议的目录优化

1. 清理废弃代码

# 建议移除或归档
src/packages/          # 多页面应用(已废弃)
.history/              # 本地编辑器历史(不应提交)

2. 统一 API 结构

src/api/
├── modules/           # 按功能模块划分
│   ├── auth.js
│   ├── map.js
│   ├── checkin.js
│   └── wechat/
│       ├── config.js
│       ├── pay.js
│       └── jsapi.js
├── common.js          # 通用 API
└── fn.js              # API 包装器

3. 组件分类

src/components/
├── ui/                # 基础 UI 组件
├── business/          # 业务组件
│   ├── map/
│   │   ├── Floor/
│   │   ├── VRViewer/
│   │   └── InfoWindow/
│   └── audio/
│       ├── audioBackground.vue
│       └── audioList.vue
└── layouts/           # 布局组件

4. Hooks 分类

src/hooks/
├── router/            # 路由相关
│   ├── useGo.js
│   └── useKeepAlive.js
├── data/              # 数据相关
│   └── useContext.js
└── utils/             # 工具相关
    └── useDebounce.js

文件搜索指南

查找页面组件

# 查找所有页面组件
find src/views -name "index.vue"

# 查找特定模块的页面
ls src/views/bieyuan/
ls src/views/by/
ls src/views/checkin/

查找公共组件

# 查找所有公共组件
find src/components -name "*.vue"

# 查找特定组件
find src/components -name "*Window*.vue"
find src/components -name "*audio*.vue"

查找 API 定义

# 查找所有 API 文件
find src/api -name "*.js"

# 查找特定 API
grep -r "mapAPI" src/api/
grep -r "checkinAPI" src/api/

查找工具函数

# 查找所有工具文件
ls src/utils/

# 搜索特定函数
grep -r "function formatTime" src/

Git 相关

.gitignore 关键配置

node_modules/
dist/
.history/
*.log
.DS_Store

建议添加

# IDE
.vscode/
.idea/

# 本地环境
.env.local
.env.*.local

# 测试覆盖率
coverage/

# 临时文件
*.tmp
*.temp

参考文档