从零到一:海风日记 App 架构全景与设计模式总结

前言

经过 100 篇文章的深入讲解,我们已经完整剖析了"海风日记"这款 HarmonyOS 原生应用的方方面面。本文作为系列收官之作,将从全局视角总结项目的架构设计、设计模式和最佳实践。


一、项目架构全景

1.1 四层架构

复制代码
┌─────────────────────────────────────┐
│         入口层 (EntryAbility)        │
│     UIAbility 生命周期 + 窗口管理     │
├─────────────────────────────────────┤
│         导航层 (Index)               │
│     Tabs 5 Tab 导航 + 浮动按钮       │
├─────────────────────────────────────┤
│         页面层 (28 个页面)            │
│  首页 / 日历 / 写日记 / 回顾 / 我的   │
│  + 23 个子页面                       │
├─────────────────────────────────────┤
│         组件层 + 数据层               │
│  DiaryCard / MoodSelector / WaveHeader  │
│  Colors / Dimensions / DiaryModel      │
└─────────────────────────────────────┘

1.2 核心数据模型

typescript 复制代码
enum MoodType { SAD, LOW, NEUTRAL, GOOD, HAPPY }
enum WeatherType { SUNNY, CLOUDY, RAINY, WINDY, SNOWY }

class DiaryEntry {
  id: string
  date: string
  content: string
  imageUrls: string[]
  tags: string[]
  mood: MoodType
  weather: WeatherType
  isPinned: boolean
}

二、设计模式总结

2.1 组件化设计

模式 示例 说明
容器组件 Index.ets 管理状态和布局
展示组件 DiaryCard.ets 纯 UI 展示
通用组件 WaveHeaderBand.ets 可复用品牌头部
构建器模式 @Builder tabBuilder 复用 UI 构建逻辑

2.2 状态管理策略

装饰器 用途 示例
@State 组件内部状态 isGridView, diaryList
@Link 父子双向绑定 MoodSelector
@Prop 父到子单向 普通属性传递

2.3 数据驱动 UI

复制代码
用户操作 → @State 变化 → UI 自动更新
     ↓
ForEach 重新渲染列表

三、品牌设计系统

3.1 颜色令牌

typescript 复制代码
// 主色
export const COLOR_PRIMARY = '#F5A623'     // 品牌橙
export const COLOR_AMBER = '#C8956A'        // 琥珀棕
export const COLOR_BG_PAGE = '#FAFAF7'      // 暖奶白

// 文字
export const COLOR_TEXT_MAIN = '#2D2926'    // 暖棕黑
export const COLOR_TEXT_SECONDARY = '#9B8F84' // 暖灰

3.2 尺寸规范

typescript 复制代码
export const PAGE_PADDING = 16
export const CARD_RADIUS = 16
export const FONT_BODY = 16
export const FONT_DATE_HERO = 80

四、关键技术指标

维度 数据
页面数 28 个
组件数 4 个通用组件
源码文件 37 个 .ets 文件
代码行数 5000+ 行
Symbol 图标 30+ 个
渐变场景 10+ 处
阴影层级 5 级

五、开发建议

5.1 项目启动建议

  1. 先搭建架构:UIAbility → Tabs → 页面
  2. 再定义设计系统:Colors → Dimensions → 组件
  3. 最后填充功能:逐页面实现

5.2 性能优化建议

  1. 使用 @State 控制 UI 更新范围
  2. 使用 LazyForEach 处理大数据列表
  3. 避免在 build() 中执行耗时操作
  4. 合理使用 Scroll 和 List 的滚动复用

六、总结

本文作为《HarmonyOS 应用开发实战》系列的收官之作,总结了"海风日记"项目的完整架构和设计模式:

  1. 四层架构:入口 → 导航 → 页面 → 组件/数据
  2. 设计模式:组件化、状态管理、数据驱动
  3. 品牌设计系统:颜色、尺寸、渐变、阴影
  4. 技术指标:28 页面、37 源文件、5000+ 行代码

感谢你阅读本系列的全部 100 篇文章!通过"海风日记"这个完整的实战项目,我们系统性地学习了 HarmonyOS 应用开发的各个方面。希望这些文章能帮助你在鸿蒙开发的道路上更进一步。

Happy HarmonyOS Coding! 🌊

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

相关推荐
Cosolar5 小时前
不收费、不加水印、数据归你:我做了个开源的在线简历工具
后端·面试·前端框架
小蒜学长6 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
陈随易6 小时前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
每天一道题7 小时前
CAP、Raft 与多数派:分布式系统如何达成一致?
分布式·后端·微服务
前端的日常7 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
IT_陈寒8 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
ServBay8 小时前
本地模型已经跑起来了,Copilot Fusion 为什么还要联网?
后端·ai编程·github copilot
武子康9 小时前
H3-World 的动作没按时发生,先检查时间线变成了什么
人工智能·后端·agent
苍何9 小时前
腾讯 Buddy One 来了,办公全家桶一键打通WorkBuddy(附教程)
后端
GIS数据转换器9 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts