Files
2026-10-08 23:37:39 +07:00

9.5 KiB
Raw Permalink Blame History


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

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

项目类型: H5

可选值:

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

开发语言: Node

可选值:

GO / Java / PHP / Node

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

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

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

项目成员: DN3634,DN8161

项目状态: 开发中

可选值:

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

项目级别: 中

可选值:

高 / 中 / 低

核心分支: main

代码仓库:

最后审计人:

最后审计时间:

告警群:

备注:

  • package.json 中 name 为 landpage,仓库/目录名为 91dj-landpage-client。
  • 下载接口 appId 为 5(见 src/api/btn.js),已无埋点。
  • 接口路径前缀为 /plm,开发环境由 vue.config.js 代理;选线候选域名见各环境 .env.* 中的 VUE_APP_BASE_HOSTS(JSON 数组),勿将含密钥、内网地址的未脱敏内容对外发布。

1. 项目说明

本仓库为面向 移动端 H5 浏览器(含 PC 落地页展示)的 Vue 2 + Vue CLI 4 单页应用,语言为 JavaScript(无 TypeScript)。UI 同时使用 Vant 2 与 Element UI 2,状态管理为 Vuex 3(当前 store 为空壳,业务数据主要在页面组件内维护),路由为 Vue Router 3,模式为 history(HTML5 History)(见 src/router/index.js)。入口为 src/main.js,挂载 Router、Vuex、Vant、Element、剪贴板、Swiper、Google Analytics(vue-analytics)等。

业务定位: 91pron App 下载落地页(Landing Page),单路由 / 对应 src/views/land/index.vue。根据设备类型(userAgent)与模板版本(version: A / B)切换子组件:

场景 组件
移动端 + 版本 A mobile1.vue
移动端 + 版本 B mobile2.vue
PC 端 pc.vue(A/B 共用)
特定 PC URL tips.vue
接口失败选线 selectLinePopup.vue

子组件通过 props 接收 os、switchData 等,通过 $emit 向上传递 getApkInfo 事件。

启动流程(land/index.vue):

  1. 解析 URL 查询参数(dc、ch、pc 等)并写入 sessionStorage。
  2. 获取外网 IP 后调用 bottonlist(https://blsp01.com/api/stat/version/bottonlist)拉取按钮开关(switchData,不含下载地址)。
  3. 用户点击下载时 handleGetApkInfo:iOS 轻量版调 h5/config 下载描述文件;iOS 商店版(iosStore)与 Android 调 bottonclick 拿 data.link 跳转,后端同时记录点击。
  4. 接口失败时弹出 选线弹窗,用户选择后切换 axios.defaults.baseURL 并重试。

技术栈要点:

  • 构建:Vue CLI 4(vue.config.js),生产使用 compression-webpack-plugin 生成 gzip 产物。
  • 样式:Sass/SCSS(node-sass + sass-loader),element-variables.scss 定制 Element 主题。
  • 适配:lib-flexible + postcss-plugin-px2rem(rootValue: 37.5,设计稿基准 375px);带 pcm 选择器前缀的样式不转 rem(PC 端)。
  • 网络:axios 封装于 src/utils/request.js,默认 baseURL: '/',业务码 200 视为成功。
  • 其他:qrcode 生成 PC 扫码图、vue-clipboard2 复制渠道参数、moment、swiper、vue-analytics(UA-165940626-2)、register-service-worker(PWA 配置于 vue.config.js)。

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

常用脚本(package.json):

命令 说明
npm run dev 本地开发(vue-cli-service serve)
npm run build 生产构建
npm run test-build 测试环境构建(--mode test)
npm run lint ESLint(src 下 .js / .vue,带 --fix)
npm run test:unit Jest 单元测试

开发环境代理(vue.config.js):

路径 说明
/plm 业务接口代理(target 以文件内配置为准)
/dcserv 代理至 https://api.shuifeng.cc(调试用途)

项目目录结构(核心):

91pron-landpage-client/
├── public/
│   ├── index.html              # 入口 HTML,含 LandingSDK 与 SEO meta
├── src/
│   ├── main.js                 # 入口:Router、Vuex、Vant、Element、Analytics 等
│   ├── App.vue
│   ├── router/
│   │   └── index.js            # 单路由 History 模式
│   ├── store/
│   │   └── index.js            # Vuex(当前无业务 state)
│   ├── views/land/
│   │   ├── index.vue           # 落地页主入口:设备判断、选线、下载逻辑
│   │   └── components/         # mobile1 / mobile2 / pc / pc2 / tips / selectLinePopup
│   ├── api/                    # btn(下载接口)、getIp
│   ├── utils/                  # request、traceId、userAgent 等
│   ├── plugins/                # flexible、element、scale_no
│   └── assets/                 # 样式、各模板图片(mobile1/mobile2/pc/pc2)
├── vue.config.js
├── .env.development / .env.production
├── build.sh                    # 正式环境打包发布脚本(示例)
├── test_build.sh               # 测试环境打包发布脚本(示例)
└── project.md                  # 本文件

接口与选线:

  • 下载接口直连 https://blsp01.com/api/stat/version(见 src/api/btn.js,接口已开 CORS)。
  • VUE_APP_BASE_HOSTS:各环境 .env.* 中为 JSON 数组字符串,供选线弹窗展示候选 API 域名;用户选择后写入 axios.defaults.baseURL 并重试 bottonlist。
  • 生产部署需由 Nginx / 网关 将 /plm 转发至实际业务后端;History 模式需配置 单页回退(try_files → index.html)。

2. 基础设施与中间件

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

  • 业务 API:/plm 路径下的配置与下载上报接口;静态部署时需保证 /plm 反代 与 HTTPS 证书策略一致。
  • 选线域名:VUE_APP_BASE_HOSTS 中的候选域名需可达,否则用户只能通过选线弹窗手动切换。
  • 静态资源托管:npm run build 产物在 dist/,由 CDN 或 Web 服务器提供。
  • 第三方:Google Analytics(UA-165940626-2)、可选外网 IP 查询(api.ipify.org,getIp 中,当前主流程未启用)。

3. 运维部署

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

推荐发布流程(示例):

  1. 使用约定 Node 版本(建议 12.18.1)安装依赖:npm ci 或 npm install。
  2. 确认各环境 .env.* 中 VUE_APP_BASE_HOSTS、VUE_APP_BASE_API 等与当前发布目标一致。
  3. 执行 npm run build 或 npm run test-build。
  4. 将 dist/ 同步至静态服务器;确认 History 路由回退 与 /plm 反代。
  5. 仓库内 build.sh(正式)、test_build.sh(测试)为示例流程(打包 zip → scp → 远程 dist.sh),主机与路径以实际运维规范为准,避免泄露账号与内网信息。

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

变量 作用
ENV 环境标识(development / production)
VUE_APP_BASE_API API 根路径前缀(生产多为 /api)
VUE_APP_APP_API 应用 API 前缀(开发环境 /api)
VUE_APP_WEB_API Web API 前缀(开发环境可为空)
VUE_APP_BASE_HOSTS 选线候选 API 域名列表(JSON 数组字符串)

4. 风险说明

  • 强依赖网关反代:生产若 /plm 代理错误,配置拉取与下载上报将不可用;History 模式服务器配置错误会导致 深链 404。
  • 选线失败:bottonlist 请求失败时弹出选线弹窗;若所有候选域名不可用,用户可能无法获取下载配置。
  • 渠道参数:下载与剪贴板逻辑依赖 URL 参数(dc、ch、pc、tid 等),参数缺失或格式不符可能影响跳转与统计。
  • 配置敏感信息:.env、选线域名、部署脚本中的主机信息 勿提交到公开仓库;供应链上锁定 package-lock.json 并定期审计依赖。

5. 历史事故(可选)

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

6. 交接说明(可选)

  • 落地页主逻辑集中在 src/views/land/index.vue;新增模板时参考 mobile1 / mobile2 / pc 组件模式,并在 index.vue 中注册与切换。
  • 子组件规范见 .cursor/rules/vue-component.mdc;样式与 px2rem 见 .cursor/rules/scss-styling.mdc。
  • 接口封装在 src/api/;HTTP 请求统一走 src/utils/request.js。
  • Figma 转落地页工作流见 .cursor/skills/figma-to-landpage/SKILL.md。
  • 请勿将含密钥、生产内网地址的 .env 或未脱敏部署脚本提交至对外可见仓库;YAML 头部元数据若与真实组织不一致,请在内部系统中核对后修改。