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

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


相关资源:

相关推荐
AskHarries20 小时前
Stripe 集成教程
后端
65岁退休Coder20 小时前
LangChain v1.3.4 笔记 - 03 Agent 的 model、tools、response_format 及 stream 输出
后端
饼干哥哥20 小时前
n8n 又活了?用 Codex把跨境电商工作流转成 Skill
人工智能·后端·代码规范
武子康20 小时前
Java 后端 → 实时语音 AI 转型复盘:4 个 FDE 技术底座 + 6 个差距 + 6 类职业资产路线
人工智能·后端·openai
一缕清烟在人间20 小时前
鸿蒙原生开发手记:徒步迹 - Preferences 轻量级数据存储
后端
霸道流氓气质21 小时前
SpringBoot+Vue通过ModbusTCP协议实现PLC 设备连接、重连实时控制
vue.js·spring boot·后端
SimonKing21 小时前
阿里要求全员卸载 Claude Code:事件始末与深层逻辑
java·后端·程序员
武子康21 小时前
FDE 到底是什么:为什么 AI 时代重新需要前线部署工程师(4 个标准 + 8 类风险 + 10 个问题)
人工智能·后端·openai
xianjixiance_21 小时前
鸿蒙原生开发手记:徒步迹 - 轨迹记录:暂停/继续/停止
后端
猫猫不是喵喵.21 小时前
SpringBoot自动装配原理
java·spring boot·后端