-
Notifications
You must be signed in to change notification settings - Fork 1
Frontend Implementation
bmh201708 edited this page Feb 27, 2026
·
1 revision
本页基于当前
miniprogram/代码实现整理,面向前端开发、联调和维护。
| 项目 | 现状 |
|---|---|
| 框架 | 微信小程序原生(WXML/WXSS/JS) |
| 状态管理 | 页面 data + app.globalData + wx.setStorageSync
|
| 请求层 |
miniprogram/utils/request.js 统一封装 |
| 运行时配置 | miniprogram/config/runtime.js |
| 国际化 |
miniprogram/utils/language.js(en/zh) |
| 导航 |
app.json + 自定义 custom-tab-bar
|
目录重点:
-
miniprogram/pages/*:业务页面实现。 -
miniprogram/custom-tab-bar/*:底部导航与全局搜索入口。 -
miniprogram/utils/request.js:direct-http/cloudbase-anyservice双模式请求。 -
miniprogram/config/runtime.js:后端接入模式与 CloudBase AnyService 参数。
app.json 当前注册 14 个页面,入口流程为登录页。
Tab 页(自定义 TabBar):
pages/lab/indexpages/projects/indexpages/explore/indexpages/profile/index
非 Tab 页(navigateTo/redirectTo):
- 登录注册:
login、register、wx_profile_setup - Lab 子工具:
AcademicPls、Citations、DataViz、review_simulator - 文献详情:
paper/detail - Profile 设置:
profile_settings - 文献卡片模式:
explore_Card
导航实现要点:
- 自定义 TabBar 中央按钮是“全局论文搜索”入口(弹出搜索框)。
- TabBar 搜索会先预请求
/papers/feed,再切换到Explore页面消费预加载结果。
统一请求入口:miniprogram/utils/request.js
- 自动附带
Content-Type: application/json。 -
auth: true时自动读取token并加Authorization: Bearer ...。 - 统一 HTTP 正常/异常归一化(2xx 通过,非 2xx 抛
Error)。
两种请求模式:
-
direct-http- 通过
wx.request直连runtimeConfig.apiBaseUrl。
- 通过
-
cloudbase-anyservice- 通过
wx.cloud.callContainer转发。 - 自动设置
X-WX-SERVICE、X-AnyService-Name/X-Vm-Service。
- 通过
运行时配置文件:miniprogram/config/runtime.js
-
apiMode:direct-http或cloudbase-anyservice -
apiBaseUrl: 直连模式后端地址 -
cloudbase.env/gatewayService/anyServiceName/vmService: AnyService 接入参数
登录态:
-
token、user存在wx本地存储。 - 多数页面遇到
401或missing_token会清空登录态并跳转登录页。
国际化:
-
language.js只维护en/zh。 - 当前语言优先从
app.globalData.language读取,否则使用本地存储。 -
profile_settings支持切换语言,并尝试同步到/users/me/profile。
用户资料:
- Profile 与设置页读取
/users/me。 - 微信登录后若昵称/头像缺失,会进入
wx_profile_setup强制补全。
-
login支持邮箱登录与微信登录(/auth/email-login、/auth/wx-login)。 - 微信登录请求失败时包含一次
502重试逻辑。 -
register调用/auth/email-register并在成功后写入登录态。 -
wx_profile_setup调用/users/me/profile提交昵称与头像(base64 data URL)。
-
explore使用双列瀑布流分栏(splitColumns)。 - 支持关键词检索、下拉刷新、点赞切换。
-
explore_Card是同源数据的卡片化展示模式。 -
paper/detail集成论文详情、评论、收藏、阅读打点和 AI 阅读能力。
- 页面接口:
/projects/conferences(GET/POST/PATCH/DELETE)。 - 本地计算
deadline剩余天数并排序,过滤已过期会议卡片。 - 右上角“添加”按钮与卡片点击都进入同一编辑弹窗,支持新增/编辑/删除。
- 表单包含日期、进度、颜色主题、备注等字段校验。
同步工具:
-
AcademicPls:输入限制 30-2000 字符;接口POST /lab/academic-pls;支持最近记录GET/DELETE /lab/academic-pls/recent/*。 -
Citations:输入上限 500 字符;支持APA7/MLA9/CHICAGO/AUTO;接口POST /lab/citations/format;支持最近记录GET/DELETE /lab/citations/recent/*。
异步工具(任务 + 轮询):
-
DataViz:上传csv/json/xls/xlsx(最大 50MB)后创建任务并轮询结果,成功后渲染简化 Canvas 图表。 -
review_simulator:上传pdf/txt/md(最大 50MB)后创建任务并轮询,支持历史结果加载与删除。
-
profile展示用户信息与收藏论文(/users/me/liked-papers)。 -
profile_settings支持昵称编辑、徽章样式与文案、语言切换、头像压缩后转 base64 上传。 - 本地偏好 key:
profile_badge_preferences_v1、profile_local_preferences_v1。
- 认证错误处理逻辑在多个页面重复实现(可后续抽成公共 helper)。
- API 调用统一走
request.js,扩展新模块时建议沿用相同错误模型。 - 异步任务页面都使用“创建任务 + 轮询 + 超时失败”的统一范式。
- TabBar 使用自定义实现,页面布局需为底部导航预留安全区空间。
Research Pilot Wiki | Home | Quick Start | Architecture | API | Ops