755 lines
20 KiB
Markdown
755 lines
20 KiB
Markdown
# Likei H5 项目详情
|
||
|
||
最后扫描时间:2026-06-09
|
||
|
||
## 1. 项目定位
|
||
|
||
`likei-h5` 是一个运行在宿主 App WebView 内的多业务移动端 H5 项目,核心技术栈为 `Vue 3 + Vite 7 + Pinia 3 + Vue Router 4 + Vue I18n 11 + Vant 4`。
|
||
|
||
项目不是单一落地页,而是按业务域拆分的前端集合,覆盖:
|
||
|
||
- 角色中心:管理员、代理、BD、BD Leader、主播、金币代理。
|
||
- 钱包与资金流:提现、转账、兑换、薪资、KYC、银行卡。
|
||
- 充值与邀请:充值链路、支付方式、邀请不同角色或新用户。
|
||
- 排行榜与活动页:固定榜单、限时活动、游戏活动、世界杯专题。
|
||
|
||
默认运行模型优先适配 App 宿主环境,浏览器环境主要用于本地开发和调试。
|
||
|
||
## 2. 快速启动
|
||
|
||
### 2.1 环境要求
|
||
|
||
- Node:`^20.19.0 || >=22.12.0`
|
||
- 包管理器:当前仓库没有锁文件,默认按 `npm` 使用。
|
||
- 开发服务:Vite,默认端口 `5173`,`strictPort: true`。
|
||
|
||
### 2.2 常用命令
|
||
|
||
```bash
|
||
npm install
|
||
npm run dev
|
||
npm run dev:test
|
||
npm run dev:prod
|
||
npm run build
|
||
npm run build:dev
|
||
npm run build:test
|
||
npm run build:prod
|
||
npm run build:atu-prod
|
||
npm run build:azizi-prod
|
||
npm run preview
|
||
npm run lint
|
||
npm run docs:sync:security
|
||
```
|
||
|
||
说明:
|
||
|
||
- `npm run lint` 执行的是 `eslint . --fix`,会直接修改文件。
|
||
- 当前没有 `test` 脚本,构建是主要健康检查方式。
|
||
- 构建后会执行 `scripts/generate-version.js`,生成 `dist/version.json`。
|
||
|
||
### 2.3 环境文件
|
||
|
||
根目录当前存在:
|
||
|
||
- `.env`
|
||
- `.env.development`
|
||
- `.env.production`
|
||
- `.env.production-atu`
|
||
- `.env.production-azizi`
|
||
- `.env.test`
|
||
|
||
环境读取集中在 `src/utils/env.js`,常用变量包括:
|
||
|
||
- `VITE_USER_AUTH`
|
||
- `VITE_NODE_ENV`
|
||
- `VITE_API_BASE_URL`
|
||
- `VITE_APP_TITLE`
|
||
- `VITE_APP_VERSION`
|
||
- `VITE_ENABLE_VERSION_CHECK`
|
||
|
||
协作注意:环境文件可能有本地改动,不要默认重置。
|
||
|
||
## 3. 启动与运行链路
|
||
|
||
### 3.1 主入口
|
||
|
||
入口文件:`src/main.js`
|
||
|
||
启动顺序:
|
||
|
||
1. 引入全局样式:`src/assets/main.css`、`src/styles/fonts.css`、`src/styles/global.css`。
|
||
2. 打印环境信息。
|
||
3. 安装运行时安全能力:`installRuntimeSecurity()`。
|
||
4. 安装受保护资源运行时:`installProtectedAssetRuntime()`。
|
||
5. 应用性能模式 class:`applyPerformanceModeClass()`。
|
||
6. 创建 Pinia,并启用 `pinia-plugin-persistedstate`。
|
||
7. 注册全局指令 `v-smart-img`。
|
||
8. 注册全局组件 `LoadingContent`。
|
||
9. 注册 router、pinia、i18n。
|
||
10. 按 URL `lang` 参数和页面规则初始化语言。
|
||
11. 挂载到 `#app`。
|
||
12. 空闲时检查版本,开启后每 5 分钟轮询版本。
|
||
|
||
### 3.2 路由
|
||
|
||
路由文件:`src/router/index.js`
|
||
|
||
特点:
|
||
|
||
- 使用 `createWebHashHistory`,适合 App WebView 和无需服务端 history rewrite 的 H5。
|
||
- 页面均为动态 import。
|
||
- 统一安装 `installRouteGuard(router)`。
|
||
- 未匹配路由重定向到 `/apply`。
|
||
|
||
当前主要路由域:
|
||
|
||
- 公共入口:`/`、`/loading`、`/apply`、`/not_app`。
|
||
- 角色中心:`/admin-center`、`/agency-center`、`/bd-center`、`/bd-leader-center`、`/host-center`、`/coin-seller`。
|
||
- 钱包资金:`/available-income`、`/transfer`、`/exchange-gold-coins`、`/cash-withdraw`、`/cash-out`、`/KYC`、`/bank-card`。
|
||
- 充值:`/recharge`、`/recharge-pay-way`、`/map`、`/recharge-guide`。
|
||
- 邀请:`/invitation/invite-new-user`、`/invite-bd`、`/invite-bd-leader`、`/invite-agency`、`/invite-recharge-agency`。
|
||
- 排行榜:`/couple`、`/top-list`、`/weekly-star`、`/ranking`、`/games-king`。
|
||
- 活动页:`/recharge-reward`、`/login-reward`、`/daily-recharge`、`/activities/*`。
|
||
|
||
### 3.3 App 桥接与请求头
|
||
|
||
宿主适配相关文件:
|
||
|
||
- `src/utils/appBridge.js`
|
||
- `src/utils/appConnectionManager.js`
|
||
- `src/utils/appConnector.js`
|
||
- `src/utils/routeGuard.js`
|
||
|
||
宿主注入兼容:
|
||
|
||
- `window.app`
|
||
- `window.webkit`
|
||
- `window.FlutterPageControl`
|
||
|
||
推荐用法:
|
||
|
||
- 路由守卫使用 `routeGuard` 保证受保护页面在 App 内建立连接。
|
||
- 页面如果自己直接使用接口,必须先通过 `connectToApp` 设置请求头。
|
||
- 活动页当前规则是:图片预加载和接口初始化分离,loading 只等待图片,业务接口在 `connectToApp(() => { loadInitialPageData() })` 成功后独立请求。
|
||
|
||
## 4. 构建与 Vite 配置
|
||
|
||
配置文件:`vite.config.js`
|
||
|
||
关键点:
|
||
|
||
- Vue 插件:`@vitejs/plugin-vue`。
|
||
- 自动按需组件:`unplugin-vue-components` + `VantResolver`。
|
||
- 路径别名:`@ -> src`。
|
||
- 开发服务:
|
||
- host: `0.0.0.0`
|
||
- port: `5173`
|
||
- strictPort: `true`
|
||
- `/oss` 代理到 `https://asset.global-interaction.com`
|
||
- 预览服务:
|
||
- host: `0.0.0.0`
|
||
- port: `4173`
|
||
- strictPort: `true`
|
||
- 本地开发额外提供 `/oss` 本地静态资源中间件,优先读取 `public/oss`。
|
||
- 生产类模式会去掉部分日志:
|
||
- `production`
|
||
- `production-atu`
|
||
- 默认移除 `console.log`、`console.debug`、`console.info` 和 `debugger`。
|
||
- 可通过 `LIKEI_KEEP_BUILD_LOGS=true` 保留构建日志。
|
||
|
||
构建产物命名:
|
||
|
||
- JS:`js/[hash].js`
|
||
- CSS:`css/[hash].[ext]`
|
||
- 其他资源:`assets/[hash].[ext]`
|
||
|
||
## 5. 目录结构
|
||
|
||
```text
|
||
.
|
||
├─ docs/ 项目文档、活动页建页规则、安全文档
|
||
├─ nginx/ 部署相关配置
|
||
├─ public/ 公共静态资源,本地 OSS 镜像目录在 public/oss
|
||
├─ scripts/ 构建后版本生成、安全文档同步等脚本
|
||
├─ src/
|
||
│ ├─ api/ 按业务域拆分的接口层
|
||
│ ├─ assets/ 本地图片、图标、字体、基础样式
|
||
│ ├─ components/ 公共组件
|
||
│ ├─ config/ 图片路径、安全白名单等配置
|
||
│ ├─ directives/ 自定义指令
|
||
│ ├─ locales/ 多语言资源与 i18n 初始化
|
||
│ ├─ router/ 路由定义
|
||
│ ├─ stores/ Pinia store
|
||
│ ├─ styles/ 全局样式和字体
|
||
│ ├─ utils/ 桥接、HTTP、权限、缓存、图片、支付等基础设施
|
||
│ └─ views/ 页面级业务模块
|
||
├─ vite.config.js
|
||
└─ package.json
|
||
```
|
||
|
||
## 6. 页面与业务地图
|
||
|
||
### 6.1 `src/views`
|
||
|
||
当前一级页面目录:
|
||
|
||
- `Activities`
|
||
- `AdminCenter`
|
||
- `AgencyCenter`
|
||
- `ApplyHost`
|
||
- `BDCenter`
|
||
- `BDLeaderCenter`
|
||
- `CPReward`
|
||
- `GoodID`
|
||
- `HostCenter`
|
||
- `Invitation`
|
||
- `LandingPage`
|
||
- `PlatformPolicy`
|
||
- `Ranking`
|
||
- `Recharge`
|
||
- `RechargeAgency`
|
||
- `Wallet`
|
||
|
||
### 6.2 角色中心
|
||
|
||
- `AdminCenter`:管理员中心、团队管理、商品赠送、管理员政策。
|
||
- `AgencyCenter`:代理中心、消息、设置、团队账单、团队成员、邀请成员。
|
||
- `BDCenter`:BD 中心、收益详情、政策、商品赠送。
|
||
- `BDLeaderCenter`:BD Leader 中心。
|
||
- `HostCenter`:主播中心与主播设置。
|
||
- `RechargeAgency`:金币代理首页、搜索用户、卖家记录、招募说明。
|
||
|
||
### 6.3 钱包与资金
|
||
|
||
目录:`src/views/Wallet`
|
||
|
||
包含:
|
||
|
||
- 可用收益
|
||
- 转账与收款人搜索
|
||
- 金币兑换
|
||
- 资金详情
|
||
- 历史薪资
|
||
- 支付结果
|
||
- 提现、提现详情、KYC、银行卡
|
||
|
||
### 6.4 充值与邀请
|
||
|
||
- `src/views/Recharge`:充值主页、支付方式、地图、充值引导。
|
||
- `src/views/Invitation`:邀请新用户、BD、BD Leader、代理、金币代理。
|
||
|
||
### 6.5 排行榜
|
||
|
||
目录:`src/views/Ranking`
|
||
|
||
当前包含:
|
||
|
||
- `Couple`
|
||
- `GamesKing`
|
||
- `KingAndQueen`
|
||
- `Overall`
|
||
- `WeeklyStar`
|
||
|
||
### 6.6 活动页
|
||
|
||
目录:`src/views/Activities`
|
||
|
||
当前包含:
|
||
|
||
- `DailyRecharge`
|
||
- `Games`
|
||
- `GulbenFestival`
|
||
- `LesserBairam`
|
||
- `LoginReward`
|
||
- `LuckyDollars`
|
||
- `Reward`
|
||
- `SpringFestival`
|
||
- `WorldCup`
|
||
|
||
活动页特点:
|
||
|
||
- 独立性高,常有专属 `page.config.js` 和 `页面创建信息.md`。
|
||
- 常见模块包括背景、排行榜、奖励弹窗、规则弹窗、任务、倒计时、赛事列表等。
|
||
- 当前活动页建页规则集中维护在 `docs/活动页/建页/`。
|
||
|
||
### 6.7 WorldCup 当前状态
|
||
|
||
世界杯专题目录:`src/views/Activities/WorldCup`
|
||
|
||
当前包括:
|
||
|
||
- 首页:`index.vue`
|
||
- 详情页:`EventDetail/index.vue`
|
||
- 专用接口:`src/api/worldCup.js`
|
||
- 页面信息:`页面创建信息.md`
|
||
- 接口说明:`世界杯接口说明.md`
|
||
|
||
已接入能力:
|
||
|
||
- 排行榜与我的排名。
|
||
- Predict Now / Ended 赛事列表。
|
||
- 赛事详情。
|
||
- 押注模块。
|
||
- 押注记录。
|
||
- 奖励弹窗与规则弹窗。
|
||
- `connectToApp` 请求头初始化。
|
||
- loading 只等待阻塞图片,接口独立初始化。
|
||
- 大整数 `matchId` 按字符串处理,避免 JS 精度丢失。
|
||
|
||
## 7. 权限与安全
|
||
|
||
### 7.1 公共路径
|
||
|
||
公共路径白名单在:
|
||
|
||
- `src/config/security.js`
|
||
- `src/utils/permissionManager.js`
|
||
|
||
`security.js` 中的 `PUBLIC_PATHS` 用于 HTTP 和路由安全判断;`permissionManager.js` 中的 `ROLE_PERMISSIONS.PUBLIC_PAGES` 用于权限矩阵。
|
||
|
||
新增公共页时,两处都要检查是否需要同步。
|
||
|
||
### 7.2 角色模型
|
||
|
||
角色定义在 `src/utils/permissionManager.js`:
|
||
|
||
- `admin`
|
||
- `freightAgent`
|
||
- `bdLeader`
|
||
- `bd`
|
||
- `agent`
|
||
- `anchor`
|
||
- `guest`
|
||
|
||
默认首页:
|
||
|
||
- `admin` -> `/admin-center`
|
||
- `freightAgent` -> `/coin-seller`
|
||
- `agent` -> `/agency-center`
|
||
- `bdLeader` -> `/bd-leader-center`
|
||
- `bd` -> `/bd-center`
|
||
- `anchor` -> `/host-center`
|
||
- `guest` -> `/apply`
|
||
|
||
角色优先级:
|
||
|
||
`admin > freightAgent > bdLeader > bd > agent > anchor > guest`
|
||
|
||
### 7.3 路由守卫
|
||
|
||
文件:`src/utils/routeGuard.js`
|
||
|
||
流程:
|
||
|
||
1. 公共页直接放行。
|
||
2. 非公共页检查 App 连接。
|
||
3. Debug 环境允许浏览器模式调试,非 Debug 环境受保护页面必须在官方 App 内。
|
||
4. 拉取用户资料和身份。
|
||
5. 用 `permissionManager` 判断页面权限。
|
||
6. 无权限时跳转到该用户默认首页。
|
||
|
||
### 7.4 运行时安全
|
||
|
||
入口安装:
|
||
|
||
- `installRuntimeSecurity()`
|
||
- `installProtectedAssetRuntime()`
|
||
|
||
相关文件:
|
||
|
||
- `src/utils/runtimeSecurity.js`
|
||
- `src/utils/protectedAssets.js`
|
||
- `src/utils/protectedAssetRuntime.js`
|
||
|
||
受保护资源策略:
|
||
|
||
- 生产类模式下,`Activities/` 和 `Ranking/` 的 OSS 资源 URL 会被包装为 `likei-protected:<base64>`。
|
||
- 运行时再解析为真实 URL。
|
||
- `development` 和 `test` 模式不启用资源保护。
|
||
|
||
## 8. API 与网络层
|
||
|
||
### 8.1 接口目录
|
||
|
||
接口目录:`src/api`
|
||
|
||
当前模块:
|
||
|
||
- `activity.js`
|
||
- `admin.js`
|
||
- `bdCenter.js`
|
||
- `bdLeaderCenter.js`
|
||
- `couple.js`
|
||
- `goodId.js`
|
||
- `host.js`
|
||
- `invitation.js`
|
||
- `itemDistribution.js`
|
||
- `lottery.js`
|
||
- `pay.js`
|
||
- `ranking.js`
|
||
- `recruit.js`
|
||
- `task.js`
|
||
- `teamBill.js`
|
||
- `topList.js`
|
||
- `upload.js`
|
||
- `userInfo.js`
|
||
- `wallet.js`
|
||
- `weeklyStar.js`
|
||
- `worldCup.js`
|
||
|
||
接口按业务域拆分。新增业务如果明显独立,可以新增 API 文件;已有业务的小扩展优先复用现有文件。
|
||
|
||
### 8.2 HTTP 封装
|
||
|
||
文件:`src/utils/http.js`
|
||
|
||
导出:
|
||
|
||
- `request`
|
||
- `get`
|
||
- `post`
|
||
- `put`
|
||
- `del`
|
||
- `COMMON_HEADERS`
|
||
- `ApiError`
|
||
|
||
职责:
|
||
|
||
- 拼接 `VITE_API_BASE_URL`。
|
||
- 合并公共请求头和页面传入请求头。
|
||
- 支持 JSON 与 FormData。
|
||
- 统一包装 HTTP 错误、业务错误和网络错误。
|
||
- 非 Debug 环境中,非公共页接口必须在官方 App 连接后才允许请求。
|
||
|
||
当前注意点:
|
||
|
||
- `post(url, data)` 如果 `data` 是空对象 `{}` 会正常发送 body。
|
||
- 如果 `data` 为 `null/undefined`,当前 HTTP 封装不会写 body。
|
||
- 活动页规则要求:POST 接口无业务参数时也传 `{}`。
|
||
|
||
### 8.3 请求头来源
|
||
|
||
默认头在 `http.js` 中声明,App 连接成功后通过:
|
||
|
||
- `setHeadersFromApp`
|
||
- `updateCommonHeaders`
|
||
- `connectToApp`
|
||
- `setHttpHeaders`
|
||
|
||
更新到公共请求头。
|
||
|
||
页面直接请求接口前,需要确认是否已完成 `connectToApp`。
|
||
|
||
## 9. 状态管理
|
||
|
||
### 9.1 Pinia
|
||
|
||
当前 store:
|
||
|
||
- `country`
|
||
- `couple`
|
||
- `gamesKing`
|
||
- `identity`
|
||
- `lang`
|
||
- `lastImg`
|
||
- `rechargeTarget`
|
||
- `springFestival`
|
||
|
||
Pinia 启用了 persisted state。
|
||
|
||
### 9.2 utils 单例缓存
|
||
|
||
项目同时使用一些 utils 单例缓存:
|
||
|
||
- `src/utils/userStore.js`
|
||
- `src/utils/appConnectionManager.js`
|
||
- `src/utils/applyStore.js`
|
||
- `src/utils/coinSellerStore.js`
|
||
- `src/utils/payeeStore.js`
|
||
|
||
这些不是普通纯函数,承担跨页面状态缓存职责。新增跨页状态前要先检查是否已有对应 store 或 utils。
|
||
|
||
### 9.3 页面初始化抽象
|
||
|
||
相关文件:
|
||
|
||
- `src/utils/usePageInitialization.js`
|
||
- `src/utils/pageConfig.js`
|
||
|
||
适合用于角色中心类页面,统一处理:
|
||
|
||
- App 连接。
|
||
- 用户信息。
|
||
- 团队信息。
|
||
- 余额。
|
||
- 工作统计。
|
||
- 初始化完成回调。
|
||
|
||
活动页或轻页面通常不强制使用这套抽象。
|
||
|
||
## 10. 国际化与方向
|
||
|
||
入口:`src/locales/i18n.js`
|
||
|
||
语言资源:
|
||
|
||
- `zh`
|
||
- `en`
|
||
- `ar`
|
||
- `tr`
|
||
- `bn`
|
||
|
||
特点:
|
||
|
||
- `src/main.js` 会读取 URL hash query 中的 `lang` 参数。
|
||
- 阿语会设置 `dir=rtl`。
|
||
- 页面可根据语言或页面名单强制默认语言。
|
||
|
||
新增页面时:
|
||
|
||
- 可复用现有 key 时优先复用。
|
||
- 新增多语言文案要同步所有目标语言文件。
|
||
- 活动页如果暂时使用英文固定文案,要在页面信息 md 中记录。
|
||
|
||
## 11. 图片、资源与预加载
|
||
|
||
### 11.1 本地与线上 OSS
|
||
|
||
图片路径配置:`src/config/imagePaths.js`
|
||
|
||
规则:
|
||
|
||
- 开发环境:`/oss/h5/Azizi/`
|
||
- 非开发环境:`https://asset.global-interaction.com/h5/Azizi/`
|
||
|
||
常用方法:
|
||
|
||
- `getPngUrl(imagePath, filename)`
|
||
- `getWebpUrl(imagePath, filename)`
|
||
- `getMp4Url(imagePath, filename)`
|
||
|
||
本地 OSS 镜像目录:
|
||
|
||
- `public/oss/h5/Azizi`
|
||
|
||
当前本地主要包含:
|
||
|
||
- `Activities`
|
||
|
||
### 11.2 智能图片
|
||
|
||
全局指令:
|
||
|
||
- `v-smart-img`
|
||
|
||
相关文件:
|
||
|
||
- `src/directives/smartImage.js`
|
||
- `src/utils/image/imageCacheManager.js`
|
||
- `src/utils/image/imageHandler.js`
|
||
- `src/utils/image/imagePreloader.js`
|
||
- `src/config/imageCacheVersion.js`
|
||
|
||
活动页约定:
|
||
|
||
- 项目自身静态图、OSS 活动图可用 `v-smart-img`。
|
||
- 接口返回的远程图片链接不要使用 `v-smart-img`,直接使用原生 `<img :src="接口字段">`。
|
||
|
||
### 11.3 预加载
|
||
|
||
预加载工具:
|
||
|
||
- `preloadImages`
|
||
- `preloadImagesIdle`
|
||
|
||
当前活动页建页规则:
|
||
|
||
- 新建 `index.vue` 必须有统一 loading。
|
||
- `completePreloading()` 只负责阻塞图片预加载。
|
||
- loading 不等待业务接口。
|
||
- 业务接口提取到 `loadInitialPageData()` 或同名页面初始化方法。
|
||
- 接口初始化在 `connectToApp` 成功后执行。
|
||
|
||
## 12. 公共组件
|
||
|
||
常用公共组件:
|
||
|
||
- `BackgroundLayer.vue`
|
||
- `GeneralHeader.vue`
|
||
- `itemCenter.vue`
|
||
- `LoadingContent.vue`
|
||
- `MaskLayer.vue`
|
||
- `PageContainer.vue`
|
||
- `PermissionGuard.vue`
|
||
- `Toast.vue`
|
||
- `VapMp4Player.vue`
|
||
|
||
活动页常用:
|
||
|
||
- `itemCenter`:背景图 + 绝对定位内容层。
|
||
- `LoadingContent`:统一加载动画。
|
||
- `MaskLayer`:规则、奖励、历史、结果等弹窗遮罩。
|
||
- `GeneralHeader`:带标题与返回按钮的通用头部。
|
||
|
||
`itemCenter` 注意:
|
||
|
||
- 页面初建阶段不预设 `min-height`。
|
||
- 页面开发完成后,如需稳定图片容器高度,再按图片比例补。
|
||
- 补 `min-height` 时同步补接近的 `max-height`,默认可用 `max-height = min-height + 1vw`。
|
||
|
||
## 13. 活动页建页规则索引
|
||
|
||
活动页文档目录:
|
||
|
||
- `docs/活动页/README.md`
|
||
- `docs/活动页/建页/快速建立活动页方案.md`
|
||
- `docs/活动页/建页/建页执行流程.md`
|
||
- `docs/活动页/建页/建页操作模板.md`
|
||
- `docs/活动页/建页/建页资料库.md`
|
||
- `docs/活动页/创建记录/`
|
||
- `docs/活动页/分析/`
|
||
|
||
当前核心规则:
|
||
|
||
- 页面改动、模块补充、接口对接、样式同步和文档同步,都要联系建页规则执行。
|
||
- 新建或更新活动页时,页面模块、div 结构、方法、接口处理都要补中文注释。
|
||
- 能使用内联样式表达的固定布局、尺寸、间距、定位,优先使用内联样式。
|
||
- 页面根容器使用 `height: 100vh`,内部主内容滚动并隐藏滚动条。
|
||
- 页面任何模块都不展示可见滚动条。
|
||
- 弹窗统一使用 `MaskLayer`。
|
||
- 使用接口前必须先 `connectToApp`。
|
||
- loading 只等阻塞图片预加载,接口初始化独立。
|
||
- 多 tab 数据要使用独立数组和独立 request token。
|
||
- 多 tab 内容如果固定图片多,优先用 `v-show` 保留 DOM,避免图片反复加载。
|
||
- POST 接口无业务参数时也要传 `{}`。
|
||
- 大整数 ID,如 WorldCup `matchId`,按字符串传参,禁止 `Number(id)`。
|
||
|
||
## 14. 开发接入流程
|
||
|
||
新增页面建议顺序:
|
||
|
||
1. 判断业务域,选择合适的 `src/views/<domain>` 目录。
|
||
2. 注册路由,明确 `path`、`name`、`component`、`meta`。
|
||
3. 判断是否公共页;如是公共页,同步检查 `security.js` 和 `permissionManager.js`。
|
||
4. 判断是否需要角色权限;如需要,补对应角色权限列表。
|
||
5. 判断是否使用 `usePageInitialization`。
|
||
6. 判断是否新增或复用 `src/api/*`。
|
||
7. 接入 `connectToApp`,确保接口请求头。
|
||
8. 接入 i18n、公共组件、Toast、MaskLayer 等现有能力。
|
||
9. 如果是活动页,同步 `页面创建信息.md` 或接口说明 md。
|
||
10. 跑构建验证。
|
||
|
||
新增 API 建议:
|
||
|
||
- 明显新业务域:新增 `src/api/<domain>.js`。
|
||
- 现有业务小扩展:复用已有 API 文件。
|
||
- POST 无参数:传 `{}`。
|
||
- 大整数 ID:保持字符串。
|
||
|
||
新增活动页建议:
|
||
|
||
- 先建页面信息 md。
|
||
- 再建 `page.config.js`。
|
||
- 扫描本地 OSS 图片清单。
|
||
- 生成基础 loading、背景、模块容器。
|
||
- 逐个模块迭代,不一次性生成所有业务。
|
||
|
||
## 15. 脚本与版本
|
||
|
||
脚本目录:`scripts`
|
||
|
||
当前脚本:
|
||
|
||
- `generate-version.js`:构建后生成版本文件。
|
||
- `build-with-version.js`:带版本日志控制的构建脚本。
|
||
- `sync-security-docs.js`:同步安全文档。
|
||
|
||
版本检查:
|
||
|
||
- 文件:`src/utils/versionChecker.js`
|
||
- 构建后版本信息写入 `dist/version.json`。
|
||
- 运行时可通过 `VITE_ENABLE_VERSION_CHECK` 开启版本检查。
|
||
- 默认每 5 分钟轮询一次。
|
||
- `major` 更新会清理更完整缓存。
|
||
- `minor/patch` 会检查图片缓存版本并清理 session 数据。
|
||
|
||
## 16. 已知现状与风险
|
||
|
||
### 16.1 README 路径
|
||
|
||
当前 `README.md` 和 `START.md` 仍指向 `docs/project-details.md`,但当前主维护文档是:
|
||
|
||
- `docs/项目详情.md`
|
||
|
||
后续可以按需要同步根目录入口文档。
|
||
|
||
### 16.2 无测试脚本
|
||
|
||
当前没有 `test` 脚本。验证主要依赖:
|
||
|
||
- `npm run build`
|
||
- 必要时手动打开本地页面检查。
|
||
|
||
### 16.3 无锁文件
|
||
|
||
当前未见包管理锁文件,不同环境重新安装可能产生依赖解析差异。
|
||
|
||
### 16.4 HTTP 错误解析
|
||
|
||
`src/utils/http.js` 在非 2xx 响应时直接 `await response.json()`,如果服务端返回非 JSON,可能额外抛解析错误。后续可优化为先 try JSON,失败再 fallback text。
|
||
|
||
### 16.5 文档与页面演进快
|
||
|
||
活动页需求迭代频繁,建议每次页面改动后同步:
|
||
|
||
- 页面自身 `页面创建信息.md`
|
||
- 接口说明 md
|
||
- 必要时同步 `docs/活动页/建页/`
|
||
|
||
## 17. 常用文件索引
|
||
|
||
项目入口:
|
||
|
||
- `src/main.js`
|
||
- `src/App.vue`
|
||
- `src/router/index.js`
|
||
|
||
基础设施:
|
||
|
||
- `src/utils/http.js`
|
||
- `src/utils/env.js`
|
||
- `src/utils/routeGuard.js`
|
||
- `src/utils/permissionManager.js`
|
||
- `src/utils/appBridge.js`
|
||
- `src/utils/appConnector.js`
|
||
- `src/utils/appConnectionManager.js`
|
||
- `src/utils/versionChecker.js`
|
||
|
||
资源:
|
||
|
||
- `src/config/imagePaths.js`
|
||
- `src/directives/smartImage.js`
|
||
- `src/utils/image/imagePreloader.js`
|
||
- `src/utils/image/imageCacheManager.js`
|
||
|
||
活动页:
|
||
|
||
- `docs/活动页/建页/建页执行流程.md`
|
||
- `docs/活动页/建页/建页操作模板.md`
|
||
- `docs/活动页/建页/建页资料库.md`
|
||
- `src/views/Activities/WorldCup/页面创建信息.md`
|
||
- `src/views/Activities/WorldCup/世界杯接口说明.md`
|
||
|
||
权限与安全:
|
||
|
||
- `src/config/security.js`
|
||
- `src/utils/runtimeSecurity.js`
|
||
- `src/utils/protectedAssets.js`
|
||
- `docs/安全/前端加固-中文.md`
|
||
|
||
构建:
|
||
|
||
- `vite.config.js`
|
||
- `scripts/generate-version.js`
|
||
- `scripts/build-with-version.js`
|