140 lines
4.8 KiB
Markdown
140 lines
4.8 KiB
Markdown
# Phase 4 完成总结
|
||
|
||
## 概述
|
||
|
||
Phase 4 成功迁移了"找伙伴"、"搜索"页面,实现了底部 TabBar 导航与安全区适配,完成了 Next.js C 端应用的**全量页面迁移**。
|
||
|
||
---
|
||
|
||
## 完成的核心功能
|
||
|
||
### 1. 找伙伴页(AI 智能匹配)
|
||
|
||
- **匹配类型**:创业合伙、资源对接、导师顾问、团队招募
|
||
- **匹配逻辑**:
|
||
- 每日免费 1 次
|
||
- 购买章节获得更多次数
|
||
- 全书用户无限匹配
|
||
- **匹配结果**:匹配度、创业理念、共同兴趣、微信号
|
||
- **加入池功能**:提交手机号加入匹配池
|
||
- **次数展示**:剩余次数、已用次数、解锁提示
|
||
|
||
### 2. 搜索页(章节检索)
|
||
|
||
- **实时搜索**:输入关键词实时过滤章节
|
||
- **搜索结果**:显示所属篇章、标题、免费标签
|
||
- **跳转阅读**:点击结果直接进入阅读页
|
||
- **空态处理**:无搜索词、无结果的友好提示
|
||
|
||
### 3. 底部 TabBar 导航
|
||
|
||
- **4 个 Tab**:首页🏠、目录📚、找伙伴👥、我的👤
|
||
- **激活态**:当前页 Tab 高亮显示(#00CED1)
|
||
- **动态显示**:找伙伴 Tab 根据 `matchEnabled` 配置显示/隐藏
|
||
- **安全区适配**:`paddingBottom = env(safe-area-inset-bottom)`
|
||
- **跨端路由**:小程序用 `wx.switchTab`,Web 用 `window.location.href`
|
||
|
||
### 4. 各页面集成底部导航
|
||
|
||
在以下 4 个 Tab 页添加了 `<BottomNav />` 组件:
|
||
|
||
- HomePage (current="/")
|
||
- ChaptersPage (current="/chapters")
|
||
- MatchPage (current="/match")
|
||
- MyPage (current="/my")
|
||
|
||
---
|
||
|
||
## 文件清单
|
||
|
||
**页面组件**:
|
||
- `src/pages/MatchPage.jsx`(找伙伴)
|
||
- `src/pages/SearchPage.jsx`(搜索)
|
||
|
||
**入口文件**:
|
||
- `src/match.jsx`
|
||
- `src/search.jsx`
|
||
|
||
**公共组件**:
|
||
- `src/components/BottomNav.jsx`(底部导航)
|
||
|
||
**配置更新**:
|
||
- `build/webpack.mp.config.js`(新增 match、search 入口)
|
||
- `build/miniprogram.config.js`(router.other 新增 /match、/search)
|
||
|
||
---
|
||
|
||
## 完整页面映射表(Phase 1-4)
|
||
|
||
| Next 路由 | 小程序页面 | 入口文件 | 状态 |
|
||
|-----------|-----------|----------|------|
|
||
| app/page.tsx | pages/index/index | src/index.jsx | ✅ Phase 2 |
|
||
| app/chapters/page.tsx | pages/chapters/chapters | src/chapters.jsx | ✅ Phase 2 |
|
||
| app/read/[id]/page.tsx | pages/read/read | src/read.jsx | ✅ Phase 2 |
|
||
| app/my/page.tsx | pages/my/my | src/my.jsx | ✅ Phase 3 |
|
||
| app/my/referral/page.tsx | pages/referral/referral | src/referral.jsx | ✅ Phase 3 |
|
||
| app/my/settings/page.tsx | pages/settings/settings | src/settings.jsx | ✅ Phase 3 |
|
||
| app/my/purchases/page.tsx | pages/purchases/purchases | src/purchases.jsx | ✅ Phase 3 |
|
||
| app/about/page.tsx | pages/about/about | src/about.jsx | ✅ Phase 3 |
|
||
| app/match/page.tsx | pages/match/match | src/match.jsx | ✅ Phase 4 |
|
||
| app/search/page.tsx | pages/search/search | src/search.jsx | ✅ Phase 4 |
|
||
|
||
**C 端页面 100% 迁移完成!**
|
||
|
||
---
|
||
|
||
## 安全区适配
|
||
|
||
### 底部安全区
|
||
```css
|
||
paddingBottom: 'env(safe-area-inset-bottom)'
|
||
```
|
||
确保在有底部刘海的设备(如 iPhone X)上,TabBar 不被遮挡。
|
||
|
||
### 顶部安全区
|
||
小程序自动处理 statusBar,无需额外适配。若使用自定义导航栏,可读取 `app.globalData.navBarHeight`。
|
||
|
||
### 右侧安全区(胶囊按钮)
|
||
若使用自定义导航栏,需在右侧预留 `capsulePaddingRight`,避免遮挡胶囊按钮。
|
||
|
||
---
|
||
|
||
## 测试与验收
|
||
|
||
1. **构建**:`cd newpp && npm run build:mp`
|
||
2. **合并**:`node scripts/merge-kbone-to-miniprogram.js`
|
||
3. **测试路径**:
|
||
- **TabBar 切换**:首页 ↔ 目录 ↔ 找伙伴 ↔ 我的
|
||
- **找伙伴流程**:选择类型 → 开始匹配 → 查看结果 → 复制微信 → 加入池
|
||
- **搜索流程**:首页 → 搜索 icon(或直接访问 /search)→ 输入关键词 → 点击结果 → 阅读
|
||
- **底部导航**:各 Tab 页底部导航高亮正确、点击切换正常
|
||
|
||
---
|
||
|
||
## 当前进度
|
||
|
||
- ✅ **Phase 1**:搭架子(适配层、构建、首页/目录/阅读占位)
|
||
- ✅ **Phase 2**:核心页(阅读页接口、ChapterContent、完整目录)
|
||
- ✅ **Phase 3**:我的与子页(Zustand、我的、推广、设置、购买记录、关于)
|
||
- ✅ **Phase 4**:找伙伴与其余(match、search、底部 tabBar、安全区)
|
||
- ⏳ **Phase 5**:收尾(全量自检、样式对齐、发布流程)
|
||
|
||
---
|
||
|
||
## 下一步
|
||
|
||
进入 Phase 5 收尾阶段:
|
||
|
||
1. **全量自检**:对照「Web转小程序并上传-提示词」逐项检查
|
||
2. **样式对齐**:确保颜色、间距、圆角、阴影与 Web 一致
|
||
3. **踩坑修复**:
|
||
- WXML 不能调用 JS 方法
|
||
- 启动不阻塞(async onLaunch)
|
||
- safe-area 边界处理
|
||
- TabBar 默认隐藏项逻辑
|
||
4. **发布流程**:预览码 → 体验版 → 提审 → 发布
|
||
|
||
---
|
||
|
||
**Phase 1-4 已完成 C 端全量迁移,所有核心功能已就位!**
|