资讯动态

山海万灵 HarmonyOS 文化知识实战(15):Feature 页面拆分与 AppViewModel 落地

发布时间:2026/8/6 12:06:38 来源:尧图企业网站定制
山海万灵 HarmonyOS 文化知识实战15Feature 页面拆分与 AppViewModel 落地山海万灵的首页、图鉴、探索、馆长和“我的”都要共享神兽、区域、进度与推荐上下文。若把这些状态直接散落在每个页面页面切换后很容易出现统计不同步、选中对象丢失或降级状态不一致。当前客户端把页面内容拆入 Feature 目录再用ShanhaiAppViewModel收口启动数据与跨页业务规则让页面专注于展示和交互。Feature 负责页面内容五个一级页面对应独立的内容组件ShanhaiHomePageContent、ShanhaiArchivePageContent、ShanhaiWorldPageContent、ShanhaiCuratorPageContent与ShanhaiProfilePageContent。入口页面仍保留导航、当前选中项和回调编排但不再承载每一页的完整 ArkUI 结构。ShanhaiCuratorPageContent({ guideTitle: this.selectedGuide.title, guideScene: this.selectedGuide.scene, guideTarget: this.selectedGuide.target, recommendations: this.recommendations })这样拆分后馆长页可以独立接收讲解目标、主题、推荐关系和操作回调图鉴、探索、个人页也各自维护明确的显示边界。共享组件继续承接导航壳、状态面板与卡片等复用视觉能力。AppViewModel 收口启动与进度规则ShanhaiAppViewModel连接内容仓库、本地进度仓库和用户档案仓库。启动时它先加载 Bootstrap再返回内容是否完整以及是否处于本地降级模式入口页面据此切换 loading、empty、content 或 error 状态。const result: ShanhaiBootstrapLoadResult await this.appViewModel.loadBootstrapWithStatus() if (!result.hasRequiredContent) { this.appLoadState createShanhaiEmptyState() return } this.applyBootstrap(result.bootstrap)本地模式下ViewModel 会把已发现神兽、区域进度、展厅进度和护照印章合并回 Bootstrap。发现神兽、记忆探索位置、清除本地进度等操作都通过同一处规则处理避免五个页面各自维护一份统计结果。推荐上下文不跟着页面复制用户从图鉴或探索入口打开馆长时入口页面以当前神兽生成讲解上下文再把结果传给馆长 Feature。refreshAiContext统一刷新讲解目标和图谱推荐数据页面只消费当前结果。这个分工使“从卡片进入详情”“从详情进入馆长”“切换讲解对象”走向一致不需要在多个页面间复制推荐组装逻辑。本次运行结果当前 HAP 已安装并启动到山海万灵首页随后切换到“数字馆长”。选择白泽与“神兽”主题后页面展示“白泽神兽模块导览”并在同一屏返回对应的资料说明和讲解控制区域。这个动作链覆盖了入口页面向馆长 Feature 传递状态、ViewModel 组织讲解上下文、馆长页渲染结果的完整路径。边界与验收重点入口页面仍承担一级导航和跨页动作协调这是为了保持单一的导航入口页面内容与业务状态已经分层但还没有把每个 Feature 拆成独立 HSP/HAR 模块。后续拆分应先保证依赖方向、导航参数和状态恢复可回归再决定模块边界。验收时重点检查三件事页面切换后统计与选中对象一致本地降级时仍能读取内容和进度从图鉴或探索进入馆长后讲解结果与当前目标一致。对于无效目标或内容不完整的情况页面应保持可恢复状态而不是沿用上一对象的陈旧结果。参考ArkTS 状态管理概览。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价