Files
2026-09-15 15:25:05 +07:00

10 KiB
Raw Permalink Blame History


项目名称: 91pron H5 客户端 # 与 DMP 或内部命名一致时请自行替换 一级部门: 北斗 # 请填写一级部门名称 二级部门: 瑞升 # 请填写二级部门名称,无则留空

DMP编码: JHA-204 # 无则留空

项目类型: H5

可选值:

H5 / APP / PC / 服务 / 组件 / 工具 / AI / 中间件

开发语言: Node

可选值:

GO / Java / PHP / Node

项目负责人: DN4929,DN4868 # 员工编号,多个用逗号隔开,这里的负责是这套代码的负责人

运维负责人: DN9460,DN9651,DN4792 # 负责部署、监控、K8S、发布、证书等

产品负责人: YY1145,YY1208 # 项目产品经理

项目成员: DN4929,DN4868

项目状态: 开发中

可选值:

开发中 / 维护中 / 已停止 / 已归档

项目级别: 中

可选值:

高 / 中 / 低

核心分支: main

代码仓库:

最后审计人:

最后审计时间:

告警群:

备注:

  • package.jsonnameredapricot,仓库/目录名为 91pron-h5-client
  • 业务 API 根路径由 选线得到的 configStore.baseUrl + 环境变量 VITE_APP_API_BASE_URL(如 /api/app)拼接;选线候选域名见各环境 .env.* 中的 VITE_BASE_URL(JSON 数组),勿将含密钥、内网地址的未脱敏内容对外发布。

1. 项目说明

本仓库为面向 移动端 H5 浏览器Vue 3 + Vite + TypeScript 单页应用,UI 基于 Vant 4,状态管理为 Piniapinia-plugin-persistedstate 持久化),路由为 Vue Router 4,模式为 createWebHistoryHTML5 History(见 src/router/index.ts)。入口为 src/main.ts,挂载 Pinia、Router、埋点插件与 Vant Lazyload 等;全局路由前置逻辑见 src/permission.ts(含大量 <keep-alive> 与 Tab 缓存策略)。启动页 Splash 负责 API 选线ping)、拉取应用配置并写入 config/global 等 store,再进入 MainView 主导航。

业务域在 src/views/ 下按模块划分,主要包括:首页与搜索/片库/长短视频播放详情lldhomeshortVideo)、社区(帖子、套图、排行、群聊等,community)、直播lldlive)、我的(登录、钱包会员、充值提现、消息、AI 功能、历史收藏等,lldmine)、ACG(小说/漫画/动漫,acgModule)、暗网darkNet)、娱乐entertainment)、联合游戏活动jointGamingActivitie)、预售lldpresale)、免费福利lldfreeBenefits)等;接口封装在 src/service/,按域拆分(如 home.tsuser.tscommunity.ts)。

技术栈要点:

  • 构建:Vite 3vite.config.ts),生产使用 Terser 压缩,vite-plugin-compression 生成 gzip 产物;unplugin-vue-components + VantResolver 按需引入组件;vite-plugin-svg-icons 使用 src/assets/icons;可按环境开启 vconsolevite-plugin-vconsole)。
  • 样式:Sass,通过 css.preprocessorOptions.scss.additionalData 向各组件注入 @/assets/styles/main.scss;存在主题目录 src/assets/theme/
  • 适配:postcss-px-to-viewport-8-plugin(见 postcss 配置)。
  • 网络:axios 封装于 src/utils/request.tsbaseURL = configStore.baseUrl + VITE_APP_API_BASE_URL;支持 Authorization、业务码非 200 时 showToast、可选 请求体/查询参数加密VITE_PARAMETER_ENCRYPTION)、响应 hash 字段时的解密;GET 短缓存与请求去重等逻辑也在该文件中。
  • 播放器与媒体:xgplayer-hls.jsHLS),业务中多处拼接 /api/app/vid/h5/m3u8/… 拉流地址(见 VideoHls 等组件)。
  • 其他:mitt 事件总线、momentswiperqrcode.vuehtml5-qrcodevuedraggable-esdevtools-detector(生产环境非调试参数下启用检测)、index.html 引入 web-sdk 脚本供设备信息与部分请求头使用等。

Node 版本: 仓库 README.md 建议使用 16.17.1

常用脚本(package.json):

命令 说明
npm run dev 本地开发(vite,默认见 vite.config.tsserver.port 等)
npm run build:prod 生产构建(--mode production
npm run build:test 测试环境构建(--mode test
npm run preview 预览构建产物(vite preview
npm run lint ESLintsrc.js / .vue / .ts,带 --fix

开发环境代理(vite.config.ts): 本地将 /dcserv 代理到可配置的 target(用于部分接口调试,以文件内实际配置为准)。

项目目录结构(核心):

91pron-h5-client/
├── public/
├── src/
│   ├── main.ts                 # 入口:Pinia、Router、Vant、埋点、devtools 等
│   ├── App.vue
│   ├── permission.ts           # 路由守卫:keep-alive / Tab 缓存策略
│   ├── router/
│   │   └── index.ts            # RouterHistory)、_SPLASH_ / 首页集合 / 业务子路由等
│   ├── stores/                 # Piniauser、config、global、app 等)
│   ├── views/                  # 页面:lldhome / community / lldmine / acgModule 等
│   ├── service/                # 按域拆分的接口方法
│   ├── components/             # 通用与业务组件(含 VideoHls、瀑布流等)
│   ├── utils/                  # request、埋点、加解密、本地存储等
│   ├── hooks/                  # 组合式逻辑
│   ├── assets/                 # 样式、图标、主题等
│   ├── plugins/                # 如 tracker 等
│   └── enums/、typings/        # 枚举与类型
├── vite.config.ts
├── index.html                  # 入口 HTML,含 web-sdk 脚本引用
├── .env.development / .env.test / .env.production   # VITE_* 与选线域名等
├── prod_build.sh               # 示例打包/发布脚本(环境差异大,使用前请内部确认)
└── project.md                  # 本文件

接口基址与选线:

  • VITE_APP_API_BASE_URL:通常为 /api/app,作为 axios 路径前缀拼在选线成功的域名之后。
  • VITE_BASE_URL:各环境文件中为 JSON 数组字符串,供启动阶段对多个候选域名做 ping/选线,选中的结果写入 configStore.baseUrl(详见 Splashsrc/utils/ping.ts 等逻辑)。
  • 生产部署若使用相对路径,需由 网关 / Nginx 将浏览器同源下的 /api 转发到实际业务后端。

2. 基础设施与中间件

本仓库为 纯前端工程,不内置后端;运行时依赖:

  • 业务 API:由选线结果 + VITE_APP_API_BASE_URL 决定;静态部署时需保证 /api/... 反代 与 HTTPS 证书策略一致。
  • 静态资源托管build:prod / build:test 产物在 dist/,由 CDN 或 Web 服务器提供;History 路由 需在服务端配置 单页回退(如 try_filesindex.html)。
  • 媒体与图片域名:全局配置、资源线与播放线路等由接口与 config/global store 中的 sourceInfo线路信息 等共同决定(勿在文档中粘贴未脱敏的内网或密钥配置)。

3. 运维部署

构建产物: 执行 npm run build:prodnpm run build:test 后,在 dist/ 生成静态资源;可能同时生成 .gz(依赖服务器是否启用 gzip_static 或等价能力)。

推荐发布流程(示例):

  1. 使用约定 Node 版本安装依赖:npm cinpm install
  2. 确认各环境 .env.*VITE_BASE_URLVITE_APP_API_BASE_URL、加密开关等与当前发布目标一致。
  3. 执行 npm run build:prodnpm run build:test
  4. dist/ 同步至静态服务器;确认 History 路由回退/api 反代
  5. 仓库内 prod_build.sh 为示例流程,主机与路径以实际运维规范为准,避免泄露账号与内网信息。

环境变量说明(摘录,完整以 .env.* 为准):

变量 作用
NODE_ENV 构建/运行环境标识
VITE_APP_API_BASE_URL 与选线域名拼接,作为 API 路径前缀
VITE_BASE_URL 选线候选 API 域名列表(JSON 数组字符串)
VITE_BUILD_SOURCEMAP 是否生成 sourcemap
VITE_BUILD_DROP_CONSOLE 生产是否剔除 console
VITE_BUILD_VCONSOLE 是否打包进 vconsole
VITE_PARAMETER_ENCRYPTION 是否开启请求参数加密

4. 风险说明

  • 强依赖网关反代:生产使用相对路径时,/api 代理错误会导致整站接口不可用;History 模式服务器配置错误会导致 深链 404
  • 选线失败:启动阶段若所有候选域名不可用,用户可能停留在选线或错误态(见 Splash 与相关弹层逻辑)。
  • 参数加密与后端约定VITE_PARAMETER_ENCRYPTION 与各环境必须 与后端一致,否则请求体解析失败。
  • 安全与合规:生产环境开启 devtools 检测并跳转外部页(见 main.ts),变更前需评估用户体验与合规要求。
  • 配置敏感信息.env、选线域名、密钥类逻辑 勿提交到公开仓库;供应链上锁定 package-lock.json 并定期审计依赖。

5. 历史事故(可选)

  • 暂无(请运维/研发后续补充)

6. 交接说明(可选)

  • 路由与缓存策略集中在 src/permission.ts,新增常驻缓存页面时需同步维护 keepAliveMap / mainViewKeep 等映射。
  • 用户信息、配置等与 src/stores/ 及持久化插件相关;请勿绕过 src/utils/request.ts 直接发起业务 axios(与仓库 .cursor 前端规范一致)。
  • 接口目录:src/service/;类型定义:src/typings/
  • 请勿将含密钥、生产内网地址的 .env 或未脱敏脚本提交至对外可见仓库;YAML 头部元数据若与真实组织不一致,请在内部系统中核对后修改。