从零到一:海风日记 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! 🌊

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


相关资源:

相关推荐
名字还没想好☜13 分钟前
Go context.AfterFunc 实战(Go 1.21):context 一取消就自动跑清理,告别手写 goroutine 监听 Done
后端·golang·go
明月_清风1 小时前
为什么最近开始关注 JEV?几个实战案例告诉你答案
人工智能·后端
GetcharZp2 小时前
5 分钟拥有自己的 S3:RustFS 上手(MinIO 的 Rust 替代,Apache 2.0 可商用)
后端
行百里er2 小时前
Redis 版本演进、新特性与协议那些事儿
redis·后端
Joy T3 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
打工仔折腾 AI3 小时前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn
IT_陈寒4 小时前
Java空指针这次真把我坑惨了
前端·人工智能·后端
moMo4 小时前
LangChain 到 LangGraph: RAG 知识库改造
后端
用户574385305114 小时前
元数据驱动的通用 CRUD 后端框架 (3- createBusiness 工厂:三层装配 + 一行出 REST)
后端