重生之我在大学自学鸿蒙开发第三天-《三层架构》
- 个人主页:VON
- 文章所属专栏:从0开始的开源鸿蒙6.0.0
- 个人抖音:清洒
一、前言
今天开始三层架构写代码,使得项目耦合度更低,从而实现高内聚、低耦合开发。三层架构通过模块化设计实现解耦,兼顾灵活性与扩展性,支撑“一次开发,多端部署”的核心目标。如果想要开发复杂的APP离不开三层架构,就和java项目类似的架构模式,大型项目离不开架构的帮助。废话不多说开始今天的学习。
二、实践
本章节内容参考官方链接
应用架构设计基础——三层架构-HarmonyOS应用开发快速入门-Codelabs-华为开发者联盟
官方解释:三层工程结构如下:
-
commons(公共能力层):用于存放公共基础能力集合(如工具库、公共配置等)。commons层可编译成一个或多个HAR包或HSP包,只可以被products和features依赖,不可以反向依赖。
-
features(基础特性层):用于存放基础特性集合(如应用中相对独立的各个功能的UI及业务逻辑实现等)。各个feature高内聚、低耦合、可定制,供产品灵活部署。不需要单独部署的feature通常编译为HAR包或HSP包,供products或其它feature使用。需要单独部署的feature通常编译为Feature类型的HAP包,和products下Entry类型的HAP包进行组合部署。features层可以横向调用及依赖common层,同时可以被products层不同设备形态的HAP所依赖,但是不能反向依赖products层。
-
products(产品定制层):用于针对不同设备形态进行功能和特性集成。products层各个子目录各自编译为一个Entry类型的HAP包,作为应用主入口。products层不可以横向调用。
2.1、目录拆分
这里创建的三个目录和entry同级别的,这里是目录不是模块,这里要注意点
这里再feture文件夹下创建三个模块从而实现首页、课程学习、知识地图这三个功能
创建commons层模块,与创建features层的模块一样,在commons文件夹中,创建两个模块utils和uicomponents,创建时同样选择Static Library,这两个模块存放一些公用的工具或者ui组件,在需要用到时使用
将entry模块放入products层,products层主要根据产品定制层内结构,这里需要将工程名改成default,通过右键选择refactor-> rename,选择Rename module
这里改名之前一定要先停掉项目
2.2、迁移原项目至quickstart模块
先将quickstart模块中的目录删除,方便我们去迁移项目
直接cv过去就行了
迁移成功后的页面长这样
2.3、default模块修改
这里创建一个空页面
创建页面的时候记得看一下main_pages文件有没有重复的Index
2.4、引用quickstart模块
可以看到这里启动index没什么问题证明我们迁移成功了,图片和文字没展示出来是因为预览的时候编译器无法识别rawfile中的json文件
接下来我们在default模块引用一下quickstart模块
想要引入模块一定要先导出模块,将quickstart模块中的index页面修改下,删除@Entry,重命名为quickstart然后export导出即可
这里要将pages文件夹中的quickstartPage导出,导出后才能被其他模块使用
在defaule模块中改造oh-package.json相当于引入quickstart依赖,这一文件的作用应该和java中的pom文件类似。将所有子组件打包成模块在default中引用,从而解耦。
在index中调用QuickStartPage,这里的QuickStartPage是从依赖中引入的,简单来说就是引用了quickstart模块中的内容,页面可以正常加载证明引用成功了。
三、测试
可以看到画面正常展示出来了,注意这里用的是虚拟机,如果虚拟机安装出现问题的可以看下我的上一篇,这篇文章详细讲解了我安装时候遇到的困难这里就不赘述了。
重生之我在大学自学鸿蒙开发第二天-《MVVM模式》-CSDN博客
四、源码
这里的源码和上篇文章类似,主要是对项目的拆分,明确好每个目录是干什么的就行了,这样分清楚非常方便我们后期维护工作。