已开启
refactor(app): 抽取 ViewModel 层,页面瘦身(MVVM 第一步)(#4) #7
refactor(app): 抽取 ViewModel 层,页面瘦身(MVVM 第一步)(#4) #7
已开启
雅皮士创建于 9 天前
雅皮士
雅皮士
9 天前

变更说明

处理 Issue #4 的 MVVM 分层项。采用渐进式、低风险策略:先把业务逻辑从页面抽到 ViewModel 层,页面保留原有 @State 展示状态,渲染行为不变。

新增 ViewModel 层(ets/viewmodel/)

文件 职责
LoginViewModel.ets 表单校验(邮箱格式/密码长度)、login/register 调用、LoginData → UserInfo 转换
HomeViewModel.ets 学习进度查询、进度百分比派生计算
FlashcardViewModel.ets 每日单词拉取
QuizViewModel.ets 每日单词拉取、选项生成(Fisher-Yates 洗牌)、作答提交

页面瘦身

  • Login.ets 逻辑代码 66 行 → 约 20 行(校验/调用/映射移除)
  • Quiz.ets 选项生成与作答逻辑移入 VM
  • 4 个页面不再直接 import HttpUtil / 业务 Model,数据访问统一经 ViewModel
View (pages)  →  ViewModel  →  HttpUtil  →  云函数
   @State 展示状态  业务逻辑/校验

分层取舍

  • 本次为第一步:ViewModel 封装逻辑,页面保留展示状态(isLoading、currentIndex、selectedIndex 等)。
  • 未引入 @Observed 状态上提,避免 V1 嵌套观测的运行时风险;后续可在 V2 或逐页迁移时把业务状态进一步上提到 ViewModel。

验证

说明:验证环境 SDK 为 HarmonyOS 26.0.0,为适配 IDE 临时移除 build-profile.json5 的 compileSdkVersion(24),该临时改动未包含在本 PR。

Refs #4

likedislike
合并受阻
雅皮士雅皮士
9 天前 关联了issue:[Enhancement][P2] 可维护性与性能优化:dailyGoal 硬编码、查询效率、MVVM 分层、测试缺失