从零到一:海风日记 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. 合理使用 ScrollList 的滚动复用

六、总结

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

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

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

Happy HarmonyOS Coding! 🌊

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


相关资源:

相关推荐
维克兜率天1 小时前
【维克】ARMA模型:AR与MA的完美结合
后端·restful
是未才2 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
上海安当技术3 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
DevUI团队3 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
weixin_431600444 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
IT_陈寒5 小时前
JavaScript类型转换把我坑惨了,这破玩意真该早点搞明白
前端·人工智能·后端
用户938515635075 小时前
手写一个 LLM Harness 框架:用工程化手段把大模型幻觉踩在脚下
javascript·人工智能·后端
wei_shuo6 小时前
KES 云原生部署与弹性扩展:容器化、Kubernetes编排与自动伸缩
后端
一木之林6 小时前
Python.五.(一)--1. 并发编程、异步IO与多进程
后端
feng尘6 小时前
# 彻底搞懂 ReentrantLock 与 tryLock:从秒杀实战到 AQS 独占模式源码剖析
后端