HarmonyOS 鸿蒙应用 - NEWS项目详细介绍

一、项目背景与目标

本项目是一个基于 ArkTS 构建的跨平台 HarmonyOS 应用,采用模块化架构与组件化开发模式,具备良好的可维护性与扩展性。适用于内容展示类、社交互动类、用户中心型等中大型 App 的基础模板。

核心目标:

  • 提供清晰的模块划分与架构设计
  • 实现可复用的 UI 组件与业务逻辑封装
  • 支持模块化开发与后期扩展
  • 提升代码可维护性与团队协作效率

📦 Gitee开源地址:gitee.com/simplelife1...



二、项目搭建过程

1. 开发环境准备

  • 操作系统:Windows/macOS/Linux
  • IDE:DevEco Studio(HarmonyOS 官方 IDE)
  • 语言支持:ArkTS(基于 TypeScript 扩展的 HarmonyOS 开发语言)

2. 创建项目

使用 DevEco Studio 创建 ArkUI 声明式项目模板,选择"Empty Ability"类型,生成基础工程结构。

3. 工程目录初始化

  • 按照模块划分原则创建 commonsmodulesviewsstore 等目录。
  • 引入统一工具类、常量定义、状态管理模块。
  • 初始化网络请求模块,封装基础 API 调用。

三、项目整体设计

1. 技术选型

类别 技术栈 说明
编程语言 ArkTS HarmonyOS 推荐语言,基于 TypeScript 扩展
UI 框架 ArkUI (声明式) 支持响应式布局与高效渲染
状态管理 自定义 Store + @State / @Prop 局部 + 全局混合管理模式
网络请求 @ohos.net.http HarmonyOS 内置 HTTP 模块
构建工具 DevEco Studio 支持热重载、模拟器预览

2. 设计理念

✅ 模块化设计

  • 将功能划分为独立模块,如新闻、段子、社区、用户信息等。
  • 各模块之间通过接口通信,降低耦合度。

✅ 组件化开发

  • 所有 UI 控件以组件形式封装,便于复用与维护。
  • 使用 @State@Prop 实现响应式更新机制。

✅ 状态统一管理

  • 通过 store 模块集中管理全局状态。
  • 支持同步与异步状态更新,确保数据一致性。

✅ 工程结构清晰

  • 分层明确:pages 层负责页面导航,views 层负责具体 UI 渲染,modules 层负责业务逻辑与数据交互。
  • 支持多人协作与后期维护。

四、项目结构详解

bash 复制代码
project-root/
├── main/                        # 主程序目录
│   ├── ets/                     # ArkTS 源码目录
│   │   ├── commons/             # 公共模块
│   │   │   ├── components/      # 可复用 UI 组件(如按钮、输入框、卡片等)
│   │   │   ├── constants/       # 全局常量定义(如页面类型、枚举值等)
│   │   │   └── utils/           # 工具函数库(如格式化、防抖、本地存储等)
│   │   ├── entryability/        # 应用入口能力定义(EntryAbility)
│   │   ├── modules/             # 功能模块目录
│   │   │   ├── request/         # 网络请求封装
│   │   │   │   ├── edits/       # 编辑相关接口
│   │   │   │   ├── forme/       # 社区模块接口
│   │   │   │   ├── joke/        # 段子模块接口
│   │   │   │   ├── luckday/     # 运势模块接口
│   │   │   │   ├── my/          # 我的模块接口
│   │   │   │   ├── news/        # 新闻模块接口
│   │   │   │   ├── register/    # 注册模块接口
│   │   │   │   └── index.ets    # 请求模块统一导出
│   │   │   └── store/           # 状态管理模块(全局状态集中管理)
│   │   ├── pages/               # 页面文件目录
│   │   │   ├── HomePage.ets     # 首页主页面
│   │   │   ├── RegisterPage.ets # 注册页面
│   │   │   └── UserEditPage.ets # 用户编辑页面
│   │   └── views/               # 视图组件目录
│   │       ├── EditUser/        # 用户编辑视图
│   │       ├── Home/            # 首页各模块视图(新闻、段子、运势、社区等)
│   │       └── Register/        # 注册流程视图
│   └── resources/               # 资源文件目录
│       ├── base/                # 基础资源(颜色、字体、字符串等)
│       └── dark/                # 暗黑主题资源
├── ohosTest/                    # 测试目录(UI 测试)
└── test/                        # 单元测试目录

五、模块化开发实践

1. 模块划分原则

  • 按业务功能划分模块
    • news:新闻模块
    • joke:段子模块
    • forme:励志模块
    • my:个人中心模块
    • register:登陆/注册模块
  • 按职责分层
    • components:UI组件
    • constants:常量定义
    • utils:通用工具方法
    • request:网络请求
    • store:状态管理
  • 按页面划分
    • HomePage:功能模块展示主页面
    • RegisterPage:用户登陆/注册页面
    • UserEditPage:用户信息编辑页面

2. 模块间通信方式

  • 接口调用:模块间通过函数调用进行数据传递
  • 事件总线 :使用@provide/@Consume依赖注入机制实现模块跨层级通信
  • 状态共享 :通过 PersistentStorage.persistProp<IUser>("user",{})数据持久化,实现用户数据全局状态同步
  • 单向数据流:以谁的数据谁操作修改原则,遵循数据单向流确保数据源流向清晰,避免状态混乱,便于日后维护管理

六、项目重点与亮点

✅ 重点功能模块

模块 功能描述
首页模块 多个子模块并行展示(新闻、段子、运势、社区)
注册模块 密码设置、表单校验
用户编辑模块 修改上传头像、昵称、简介、性别等基本信息【性别可联动主题色变化】
网络请求模块 按业务封装 API,统一错误处理
状态管理模块 集中管理全局状态,提升响应效率

✅ 技术亮点

亮点 描述
ArkUI 声明式编程 使用 ArkUI 构建响应式界面,提升开发效率
模块化架构设计 各模块解耦清晰,便于维护与扩展
自定义 Store 管理状态 实现轻量级状态管理,提升响应效率
网络请求封装 统一接口调用方式,支持拦截与 mock 数据
组件化开发 提升开发效率,增强 UI 一致性

七、项目难点分析

1. 状态管理复杂度高

  • 多个模块共享状态时容易出现数据不一致问题。
  • 解决方案:封装 PersistentStorage.persistProp<IUser>("user",{})状态持久化工具类,结合工具类静态方法实现局部状态的获取、修改以及清除操作。
typescript 复制代码
import type { IUser } from '../request/register/types'

class StorageState {
  static init() {
    PersistentStorage.persistProp<IUser>("user", {
      nickname: "",
      avatar: "",
      email: "",
      desc: "",
      creator: "",
      gender: 0,
    })
  }

  static setUser(user: IUser) {
    AppStorage.set<IUser>("user", user);
  }

  static getUser() {
    return AppStorage.get<IUser>("user");
  }

  static clearUser() {
    AppStorage.set<IUser>("user", {
      nickname: "",
      avatar: "",
      email: "",
      desc: "",
      creator: "",
      gender: 0
    });
  }
}

export { StorageState }

2. 网络请求存在的问题

  • 重复代码多、配置不统一、缺乏统一入口。
  • 解决方案:项目在 /modules/request/index.ets 中定义了一个统一的 http 实例,用于封装基础请求逻辑,每个业务模块封装了具体的 API 接口,调用统一的 http 实例进行网络请求

3. UI 组件复用率低

  • 初期未充分抽象通用组件,导致重复开发。
  • 解决方案:逐步提取通用组件至 commons/components 目录,提高公共组件复用率。

八、总结

本项目采用模块化、组件化的设计理念,结合 ArkTS 和 ArkUI 框架,实现了结构清晰、易于维护、便于扩展的 HarmonyOS 应用架构。适合用于学习、二次开发或作为企业级应用的基础模板。

🌐 项目Gitee地址:gitee.com/simplelife1...

相关推荐
lqj_本人6 小时前
鸿蒙OS&UniApp PWA开发实践:打造跨平台渐进式应用#三方框架 #Uniapp
华为·uni-app·harmonyos
lqj_本人6 小时前
鸿蒙OS&UniApp集成WebAssembly实现高性能计算:从入门到实践#三方框架 #Uniapp
uni-app·harmonyos·wasm
二流小码农6 小时前
鸿蒙开发:hvigorw,一个你不得不去了解的神器
android·ios·harmonyos
lqj_本人7 小时前
鸿蒙OS&UniApp声纹识别与语音验证:打造安全可靠的跨平台语音应用#三方框架 #Uniapp
华为·uni-app·harmonyos
lqj_本人8 小时前
鸿蒙OS&UniApp内存管理优化实战:从入门到精通#三方框架 #Uniapp
华为·uni-app·harmonyos
SuperHeroWu79 小时前
【HarmonyOS 5】Laya游戏如何鸿蒙构建发布详解
游戏·华为·harmonyos·laya·鸿蒙构建
lqj_本人10 小时前
鸿蒙OS&UniApp开发跨平台AR扫描识别应用:HarmonyOS实践指南#三方框架 #Uniapp
uni-app·ar·harmonyos
lqj_本人10 小时前
鸿蒙OS&基于UniApp的WebRTC视频会议系统实践:从0到1的HarmonyOS适配之路#三方框架 #Uniapp
uni-app·webrtc·harmonyos
上海张律师12 小时前
如何导出Excel文件 -- excel_hm介绍 ##三方SDK##
harmonyos
lqj_本人14 小时前
鸿蒙OS&UniApp离线优先数据同步实战:打造无缝衔接的鸿蒙应用体验#三方框架 #Uniapp
华为·uni-app·harmonyos