一、HarmonyOS Next 开发者手册项目之项目架构设计

简介: 该项目是一个基于HarmonyOS Next的开发者学习手册应用,旨在帮助开发者系统学习HarmonyOS开发知识。项目采用分级学习方式,从基础到高级逐步深入讲解技术与实践案例。前四章重点介绍应用架构相关内容,助力快速掌握应用核心。项目结构清晰,包含主入口、源代码目录、公共资源和工具等。页面导航分为多个阶段:萌新小白(基础入门)、登堂入室(进阶学习)、进阶高手(高级开发)。支持Markdown解析,使用`@luvi/lv-markdown-in`插件展示内容,并定义了多种数据结构以规范开发流程。 源码已开源,持续更新中

项目源码已开源(持续更新中~~): https://gitcode.com/nutpi/HarmonyosNextCaseStudyTutorial

项目演示

注意: 项目需要再真机或模拟器中运行, 否则会出现部分图片无法展示的问题

项目介绍

本项目是一个基于HarmonyOS Next的开发者学习手册应用,旨在帮助开发者系统地学习HarmonyOS开发知识。项目采用分级学习的方式,从基础到高级,逐步深入讲解HarmonyOS的开发技术和实践案例。
前四章主要讲解的是应用架构及相关内容讲解, 帮助开发者能够快速掌握当前这个应用

项目结构

├── AllCaseSource/           # 静态资源库目录
│   └── TestCase/            # 示例案例资源库
├── AppScope/                # 应用全局配置
├── entry/                   # 主入口模块
│   ├── src/
│   │   ├── main/           # 主要源代码
│   │   │   ├── blogs/      # 博客Markdown文件
│   │   │   ├── ets/        # ArkTS源代码
│   │   │   ├── module.json5 # 模块配置
│   │   │   └── resources/  # 资源文件
│   │   ├── mock/           # 模拟数据
│   │   ├── ohosTest/       # 测试代码
│   │   └── test/           # 单元测试
├── hvigor/                  # 构建工具配置
├── oh-package.json5         # 项目依赖配置
└── build-profile.json5      # 构建配置

主要目录说明

  • entry/src/main/ets/:应用的主要源代码目录
  • Components/:公共组件
  • common/:公共资源和工具
  • entryability/:应用入口能力
  • pages/:页面组件
  • router/:路由配置
  • type/:类型定义
  • view/:视图组件
  • AllCaseSource/:静态资源库目录,每个子目录代表一个独立的案例或项目资源
  • 目前包含 TestCase/ 作为示例案例资源库
  • 未来将添加更多案例资源库

页面关系

页面导航结构

Index (主页)
├── BasicCaseList (萌新小白)
│   └── TestCase (案例详情)
├── AdvancedCaseList (登堂入室)
│   └── 案例详情页
├── HybridCaseList (进阶高手)
│   └── 案例详情页
└── BlogViewList (博客列表)
    └── BlogDetail (博客详情)

主要页面说明

  1. Index:应用首页,展示三个学习阶段入口
  • 萌新小白:基础入门阶段
  • 登堂入室:进阶学习阶段
  • 进阶高手:高级功能开发阶段
  1. BasicCaseList/AdvancedCaseList/HybridCaseList:各阶段的案例列表页面
  • 展示该阶段的学习案例
  • 点击案例可进入详情页面
  1. BlogViewList:博客列表页面
  • 支持卡片视图和列表视图两种展示方式
  • 可通过按钮切换视图模式
  1. BlogDetail:博客详情页面
  • 使用 @luvi/lv-markdown-in 插件解析展示Markdown内容

静态资源库说明

项目使用了静态资源库的设计模式,将案例内容封装为独立的模块:

  • 每个案例/项目都作为一个独立的静态资源库存放在 /AllCaseSource/ 目录下
  • 目前已有的 TestCase 是一个示例资源库
  • 未来会在 /AllCaseSource/ 中创建更多静态资源库,每个代表一个案例或项目
  • 主应用通过路由和依赖引用这些静态资源库中的内容

静态资源库引用方式

  1. oh-package.json5 中声明依赖:
{
  "dependencies": {
     "testcase": "file:../AllCaseSource/TestCase"
  }
}
  1. 在路由配置中引用案例路径:
export const BasicCaseListRouter:CaseType[] = [
    {
        caseName: '演示数据',
        desc: '演示数据随着项目需求而改变',
        articlePath: "Components/TestCase"
    },
    // 更多案例...
];

Markdown解析功能

项目使用 @luvi/lv-markdown-in 插件解析和展示Markdown内容:

LvMarkdownIn({
    context: getContext(),  // 资源文件模式必填参数
    loadMode: "rawfile",
    rawfilePath: "blogs/test.md",
    loadCallBack: {
        success(r: LMICallBack) {
            console.log("luvi-markdown-in > " + r.code, r.message)
        },
        fail(r: LMICallBack) {
            console.error("luvi-markdown-in > " + r.code, r.message)
        }
    }
})

数据结构

项目定义了几个主要的数据类型:

  1. RouterType:一级路由数据结构
export interface RouterType{
    stage: string;     // 阶段名称
    desc: string;      // 阶段描述
    icon: string;      // 阶段图标
    routePath: string; // 二级页面路由路径
}
  1. CaseType:案例数据结构
export interface CaseType {
    caseName: string;   // 案例名称
    desc: string;       // 案例描述
    articlePath: string; // 博文页面路由路径
}
  1. BlogItem:博客数据结构
export interface BlogItem {
    id: number;         // 博客ID
    title: string;      // 博客标题
    content?: string;   // 博客内容
    imageUrl: Resource | null; // 博客图片
    date?: string;      // 发布日期
}

注意事项

  1. 目前项目中的数据均为演示数据,将来会根据实际需求进行更新
  2. 静态资源库的设计允许灵活添加新的案例和项目,无需修改主应用的核心代码
  3. 使用 @luvi/lv-markdown-in 插件需要确保Markdown文件放置在正确的资源目录中
    4.对于博客资源及详情的数据结构目前还在准备中
相关文章
|
24天前
|
API C++
甩开卡顿!HarmonyOS丢帧问题超详细拆解手册
这是一本针对HarmonyOS丢帧问题的超详细调优指南,从渲染流水线原理到实战优化全面解析。文章拆解了应用侧、Render Service和屏幕显示三大核心模块,结合60Hz/90Hz/120Hz帧率要求,深入分析卡顿原因。通过四步法(识别、录制、定位、优化),提供核弹级性能优化方案,涵盖列表卡顿、动画掉帧、布局臃肿等常见问题,并总结避坑圣经,助你轻松甩开卡顿,打造丝滑体验!
58 1
|
25天前
|
测试技术 开发工具 开发者
HarmonyOS Next快速入门:了解项目工程目录结构
本教程旨在帮助开发者快速上手HarmonyOS应用开发,涵盖从环境搭建到工程创建的全流程。通过DevEco Studio创建首个项目时,选择“Application”与“Empty Ability”,配置项目名称、包名、保存路径等关键信息后完成创建。代码示例展示了基本UI组件的使用,如`Hello World`文本显示与交互逻辑。此外,详细解析了工程目录结构,包括AppScope自动生成规则、主模块(entry)的功能划分、依赖配置文件(oh-package.json5)的作用,以及app.json5中包名、版本号等全局配置项的含义。
64 5
|
20天前
|
开发者 UED
HarmonyOS Next快速入门:通用属性
本教程以《HarmonyOS Next快速入门》为基础,涵盖应用开发核心技能。通过代码实例讲解尺寸、位置、布局约束、Flex布局、边框、背景及图像效果等属性设置方法。如`.width()`调整宽度,`.align()`设定对齐方式,`.border()`配置边框样式,以及模糊、阴影等视觉效果的实现。结合实际案例,帮助开发者掌握HarmonyOS组件属性的灵活运用,提升开发效率与用户体验。适合初学者及进阶开发者学习。
61 0
|
20天前
|
开发者
HarmonyOS Next快速入门:通用事件
本教程聚焦HarmonyOS应用开发,涵盖事件处理的核心内容。包括事件分发、触屏事件、键鼠事件、焦点事件及拖拽事件等。通过代码实例讲解点击事件、触控事件(Down/Move/Up)、获焦与失焦事件的处理逻辑,以及气泡弹窗的应用。适合开发者快速掌握HarmonyOS Next中通用事件的使用方法,提升应用交互体验。
60 0
|
20天前
|
开发者 容器
HarmonyOS Next快速入门:Button组件
本教程摘自《HarmonyOS Next快速入门》,聚焦HarmonyOS应用开发中的Button组件。Button支持胶囊、圆形和普通三种类型,可通过子组件实现复杂功能,如嵌入图片或文字。支持自定义样式(边框弧度、文本样式、背景色等)及点击事件处理。示例代码展示了不同类型按钮的创建与交互逻辑,助开发者快速上手。适合HarmonyOS初学者及对UI组件感兴趣的开发者学习。
66 0
|
20天前
|
开发者
HarmonyOS Next快速入门:Image组件
本教程摘自《HarmonyOS Next快速入门》,专注于HarmonyOS应用开发中的Image组件使用。Image组件支持多种图片格式(如png、jpg、svg等),可渲染本地资源、网络图片、媒体库文件及PixelMap像素图。通过设置`objectFit`属性,实现不同缩放类型;利用`fillColor`属性调整矢量图颜色。示例代码涵盖本地、网络及资源图片的加载与样式设置,同时需在`module.json5`中声明网络权限以加载外部资源。适合开发者快速掌握HarmonyOS图像展示功能。
72 0
|
1月前
|
监控 JavaScript 前端开发
🎉 Harmony OS Next里的Web组件:网页加载的全流程掌控手册
本文详细解析了Harmony OS Next中ArkUI Web组件的九大生命周期回调,帮助开发者全面掌控网页加载流程。从组件初始化到加载完成,再到异常处理与性能优化,每个阶段都配有具体代码示例和注意事项。内容涵盖关键回调(如aboutToAppear、onPageBegin)的使用场景、网页加载进度监控(FCP/FMP/LCP)、以及前端页面优化实践。通过本文,开发者可以高效管理网页加载过程,提升应用性能与用户体验。
61 0
|
1月前
|
API UED 开发者
Harmony OS Next玩转多层级手势事件:当组件遇上“套娃”,触摸该怎么分家?
在HarmonyOS开发中,处理多层级手势事件是一项挑战,尤其在“组件套组件”的复杂布局下。本文深入探讨了触摸事件的基础原理、父子组件间的手势竞争规则以及如何通过`responseRegion`和`hitTestBehavior`等属性自定义触摸分发逻辑。同时介绍了`.gesture()`、`.priorityGesture()`和`.parallelGesture()`三种手势绑定方法,帮助开发者灵活调整手势优先级。掌握这些技巧,可精准控制复杂交互中的触摸行为,提升用户体验。
37 0