Swee-H5页面
Swee Public 是 Swee 平台的 H5 页面集合,基于 Vite 5 + React 18 构建,主要嵌入在原生 App 的 WebView 中。承载了 Gold Rush 挖矿、Treasure Box 宝箱任务、游戏系统(SSO Token)、创作者收益看板(7 种收入类型)、提现系统、KOL 邀请落地页、社交分享等核心运营功能,是连接 App 原生能力与 Web 灵活性的关键桥梁。
一、项目技术架构
1.1 整体架构图
1.2 核心技术栈
| 领域 | 技术选型 | 版本 |
|---|---|---|
| 构建工具 | Vite | 5.4.2 |
| UI 框架 | React + React Router | 18.2.0 / 6.3.0 |
| 移动组件 | Ant Design Mobile | 5.39.0 |
| 动画 | Framer Motion | 11.11.17 |
| 国际化 | i18next + react-i18next | 23.16.4 / 15.4.1 |
| Hooks 工具 | ahooks | 3.8.1 |
| 错误监控 | Sentry | 7.91.0 |
| 样式 | Tailwind CSS + SASS | 3.4.10 |
| JS-Native 通信 | @swee/js-bridge-sdk (DSBridge) | - |
| 兼容性 | @vitejs/plugin-legacy | Android 5+ / iOS 7+ |
选择 Vite 5 + React 18 作为核心技术栈,利用 Vite 的快速 HMR 提升开发效率,同时通过 @vitejs/plugin-legacy 确保对低版本 Android/iOS WebView 的兼容性。使用 @swee/js-bridge-sdk(基于 DSBridge)实现 Web 与原生 App 的双向通信,是 H5 嵌入 WebView 场景的关键基础设施。
二、路由架构
2.1 完整路由树
2.2 路由详细清单
| 路径 | 功能 | 认证 |
|---|---|---|
/gold-rush/home | 金矿主页(全局概览) | 需登录 |
/gold-rush/room | 房间级挖矿 | 需登录 |
/gold-rush/rules | 挖矿规则说明 | 公开 |
/treasure-box | 宝箱任务主页 | 需登录 |
/treasure-box/rule | 宝箱规则详情 | 公开 |
/game/list | 房间内游戏列表 | 需登录 |
/game/jump | 游戏跳转中转页 | 需登录 |
/game/push | Push 游戏专页 | 需登录 |
/game/revenue | 游戏收益面板 | 需登录 |
/data/summary | 创作者收益汇总 | 需登录 |
/data/ai | AI 训练/分享收益 | 需登录 |
/data/live | 直播/1V1 收益 | 需登录 |
/data/share | 分享收益详情 | 需登录 |
/data/showcase | 展示收益 | 需登录 |
/data/summon | 召唤收益 | 需登录 |
/data/other | 其他收益 | 需登录 |
/withdraw/history | 提现历史 | 需登录 |
/withdraw/apply | 提现申请 | 需登录 |
/withdraw/bind | 银行账户绑定 | 需登录 |
/share/room | 直播间分享 | 公开 |
/share/encounter | AI 邂逅分享 | 公开 |
/share/lover | 爱人分享 | 公开 |
/share/memories | 回忆分享 | 公开 |
/share/moments | 时刻分享 | 公开 |
/share/challenge | 挑战分享 | 公开 |
/invite/landing | KOL 邀请落地页 | 公开 |
/binding/entry | OAuth 绑定入口 | 需登录 |
/binding/callback | OAuth 回调 | - |
/binding/social | 社交账号绑定 | 需登录 |
三、Gold Rush 挖矿系统
3.1 系统架构
3.2 6 大 Diggies 任务
3.3 事件驱动刷新
// 父组件切换 Tab 时
eventEmitter.emit(REFRESH_MY_DIGS);
eventEmitter.emit(REFRESH_LEADERBOARD);
// 子组件监听并刷新
useEventOn({ name: REFRESH_MY_DIGS, listener: refresh });
通过 EventEmitter 实现跨组件通信,避免了 Props Drilling 和不必要的全局状态管理。父组件切换 Tab 时只需发出事件,各子组件按需监听并刷新,实现了精确的数据更新粒度控制。
四、Treasure Box 宝箱任务
4.1 任务数据结构
五、游戏系统与 SSO Token
5.1 游戏进入流程
5.2 游戏 URL 参数
| 参数 | 说明 | 来源 |
|---|---|---|
uid | 用户 ID | 登录信息 |
token | SSO 令牌 | getGameToken() API |
lang | 游戏语言 | gameLanguageMap 映射 |
roomid | 房间 ID | URL 参数 |
source | 来源 | 1=房间内 / 2=游戏Tab |
size | 窗口大小 | 1=半屏 / 2=全屏 |
time | 时间戳 | 防缓存 |
游戏 SSO Token 由后端签发,需注意 Token 的有效期控制和防重放攻击。URL 中携带 time 时间戳参数用于防缓存,但不能替代后端的 Token 过期校验机制。
5.3 游戏收益面板
- API:
/x/game/user/game/revenue_panel_1 - 展示最近 14 天收益数据
- 按小时计费统计
六、创作者收益看板
6.1 7 种收入类型
6.2 收益看板架构
6.3 收入权限检查
// 检查用户是否有权查看各模块收益
queryIncomePrivilege({ modules: string[] })
→ IncomePrivilegeVo[] {
privilegeType: string // 模块类型
permitted: boolean // 是否有权
existResource: boolean // 是否有资源
}
七、提现系统
7.1 完整提现流程
八、分享系统
8.1 6 种分享类型
| 类型 | 路径 | 功能 |
|---|---|---|
| 直播间 | /share/room | 直播间信息 + 下载引导 |
| AI 邂逅 | /share/encounter | AI 伴侣邂逅分享 |
| 爱人 | /share/lover | 爱人信息展示 |
| 回忆 | /share/memories | 互动回忆分享 |
| 时刻 | /share/moments | 精彩时刻分享 |
| 挑战 | /share/challenge | 互动挑战分享 |
8.2 分享页面交互
8.3 飞起点赞动画
九、JS Bridge 与 App 通信
9.1 通信架构
9.2 Deep Link 协议
| Deep Link | 目标页面 |
|---|---|
x3live://live_room?roomId=xxx | 直播间 |
x3live://video_streaming | 普通开播页 |
x3live://1v1_streaming | 1V1 开播页 |
x3live://ai_home | 创建数字人 |
x3live://ai_create_image | 训练数字人 |
x3live://showcase_upload | Showcase 上传 |
x3live://streamer_summon | 召回页 |
9.3 Bridge 调试工具
/test/bridge 页面提供完整的 JS Bridge 调试能力,支持自定义命名空间、方法名、参数输入和结果查看。
十、Vite 构建优化
10.1 构建策略
通过手动分包将 react、react-dom、antd-mobile 等稳定依赖拆分为独立 vendor chunk,利用浏览器缓存减少重复加载。配合 SWC 编译器(plugin-react-swc)替代 Babel,显著提升开发和构建速度。
10.2 兼容性配置
legacy({
targets: {
android: '5', // Android 5.0+
ios: '7', // iOS 7+
chrome: '58', // Chrome 58+
}
})
十一、错误监控
11.1 Sentry 配置
十二、技术亮点总结
12.1 无缝 App 集成
- JS Bridge 三种通信模式:同步调用、异步调用、事件监听
- Deep Link 协议:7+ 种原生页面跳转
- Token 透传:App 注入认证信息,Web 无需重复登录
12.2 事件驱动的组件通信
- 使用
@swee/request的 EventEmitter 实现跨组件通信 - 避免 Props Drilling 和不必要的状态提升
- 精确控制数据刷新粒度
12.3 多维度数据展示
- Gold Rush 支持全局/房间级两种视图维度
- 创作者收益支持 7 种收入类型 + 灵活时间范围
- 动态 Tab 生成 + 权限控制
12.4 SSO Token 游戏对接
- 统一的 SSO Token 获取机制
- 标准化游戏 URL 参数构建
- 支持半屏/全屏两种显示模式
12.5 飞起点赞特效
- 3 种颜色随机生成心形
- 9 种 fly-up 动画 + 延迟变种
- 纯 CSS 动画实现,高性能
飞起点赞特效完全使用 CSS @keyframes + transform 实现,触发 GPU 合成层加速,不占用主线程,在低端移动设备上也能保持流畅的 60fps 动画体验。
12.6 老设备兼容
- Vite Legacy 插件支持 Android 5+ / iOS 7+
- CSS 变量自动后备方案
- Node polyfills 支持
12.7 完整的提现闭环
- 银行账户绑定 → 提现申请 → 历史查看
- 邮箱验证码二次验证
- 金额范围校验(min/max)
12.8 KOL 邀请机制
- 邀请码绑定 + Email 验证
- Framer Motion 入场动画
- 奖励领取 + App 深度链接返回
十三、项目数据概览
| 指标 | 数据 |
|---|---|
| 路由数量 | 25+ |
| 视图组件 | 30+ |
| API 模块 | 10+ (gold/game/task/pay/data/user 等) |
| 分享类型 | 6 种 |
| 收入类型 | 7 种 |
| 挖矿任务 | 6 种 Diggies |
| Deep Link | 7+ 种原生页面 |
| 支持语言 | 3 种(en-US / zh-TW / id-ID) |
| 兼容性 | Android 5+ / iOS 7+ / Chrome 58+ |
| 构建工具 | Vite 5 + SWC |