鸿蒙HarmonyOS开发:一次开发,多端部署(工程级)三层工程架构
一、工程创建1、先创建出最基本的项目工程。
[*] 新建项目,选择Empty Ability,然后 Next
https://i-blog.csdnimg.cn/direct/f22ae6f9be6446edb9aeb69cc8e94550.png#pic_center
[*] 填写项目基本信息
https://i-blog.csdnimg.cn/direct/67f8f82645cb4f2dab14ac32c357c383.png#pic_center
[*] 可以看到DevEco Studio创建出的默认工程,仅包罗一个的entry范例的模块。
https://i-blog.csdnimg.cn/direct/531f2a81cce74ade8ad72f5cc8c2ed29.png#pic_center
2、新建common、features、 products 目录
[*] 在根目录新建三个目录
https://i-blog.csdnimg.cn/direct/caf05154461a42df826fc7fe92758ecb.png#pic_center
[*] 在 common 下新建一个叫 base 公共模块
common计划为har包,新建module时选择Static Library, 内部存放全局通用的工具函数,公共配置等
https://i-blog.csdnimg.cn/direct/474fcded28064122898936fc7c5a744d.png#pic_center
[*] 在 features 下新建项目必要的业务模块, 如home业务模块
feature计划为har包,新建module时选择 Static Library, 内部存放相对独立的业务单元,比如购物车 、我的 、分类、Home ,也就是首页底部Tab切换时的四个焦点业务模块
https://i-blog.csdnimg.cn/direct/956e1370508e4a32aa5b4dd9a3d7291d.png#pic_center
[*] 把原本的 entry 模块 重构到products目录下,然后重命名为 phone
products为产品层,里面放置phone模块,也就是入口模块,在phone中我们放置入口ability和全部页面级别的组件
https://i-blog.csdnimg.cn/direct/2b4d7ae38a3b46b2bd14dd47e10eacff.png#pic_center
二、工程结构
“一多”保举在应用开发过程中使用如下的“三层工程结构”。
https://i-blog.csdnimg.cn/direct/3e8b4c6c84d6465da5fd9a8df28b4295.png#pic_center
[*] common(公共能力层):用于存放公共基础能力聚集(如工具库、公共配置等)。
common层不可分割,需编译成一个HAR包,其只可以被products和features依赖,不可以反向依赖。
[*] features(基础特性层):用于存放基础特性聚集(如应用中相对独立的各个功能的UI及业务逻辑实现等)。
各个feature高内聚、低耦合、可定制,供产品灵活部署。不必要单独部署的feature通常编译为HAR包,供products或其它feature使用。必要单独部署的feature通常编译为Feature范例的HAP包,和products下Entry范例的HAP包进行组合部署。features层可以横向调用及依赖common层,同时可以被products层不同设备形态的HAP所依赖,但是不能反向依赖products层。
[*] products(产品定制层):用于针对不同设备形态进行功能和特性集成。
products层各个子目录各自编译为一个Entry范例的HAP包,作为应用主入口。products层不可以横向调用。
三、依赖关系
我们保举在common目录中存放基础公共代码,features目录中存放相对独立的功能模块代码,product目录中存放完全独立的产品代码。这样在product目录中依赖features和common中的公共代码来实现功能,可以最大水平实现代码复用。
https://i-blog.csdnimg.cn/direct/59d11852026c447cafe240ad38669a36.png#pic_center
配置依赖关系可以通过修改模块中的oh-package.json5文件。
通过修改products模块中的oh-package.json5文件,使其可以使用common、features模块中的代码。
同样的,修改features模块中的oh-package.json5文件,使其可以使用common模块中的代码。
1、oh-package.json5
[*]dependencies(生产依赖):声明必要在代码中import的HarmonyOS三方库(到场编译/运行阶段使用的依赖)。
[*]devDependencies(开发依赖):到场项目的开发或测试阶段。
[*]dynamicDependencies(动态依赖):动态依赖的HSP模块。在开发者必要动态加载HSP的时候配置使用。
2、配置ohpm包依赖
ohpm包的依赖一般包罗以下三种:ohpm原生三方包、ohpm三方共享包和ohpm当地共享模块。开发者可在工程或模块下的oh-package.json5中进行配置,配置依赖的示比方下所示:
[*]ohpm原生三方包依赖示比方下:
"dependencies": {
"eslint": "^7.32.0",
...
}
[*]三方包依赖示比方下:
"dependencies": {
"@ohos/lottie": "^2.0.0",
...
}
[*]ohpm当地共享模块依赖示比方下
"dependencies": {
"library": "file:../library",
...
}
四、引用ohpm包中的代码
模块资源如何共享?
https://i-blog.csdnimg.cn/direct/875d72f8866741f89e30d2ce685d66b4.png#pic_center
1、界说共享资源
在common模块中新建utils文件夹,下面创建Math.ets文件,新增Add函数,用于计算并返回两个数字的和。
// common/base/src/main/ets/utils/Math.ets
export function Add(numA:number,numB:number){
return numA + numB
}
2、在common模块index文件中导出
在common模块中创建index.ets文件,说明必要export的类、函数的名称及在当前模块中的位置,否则其它模块无法使用。
// common/base/index.ets
export * from './src/main/ets/utils'
3、在phone模块oh-package.json5文件中引入依赖
// products/phone/oh-package.json5
"dependencies": {
"base": "file:../../common/base"
}
4、在phone模块中import和使用这些类和函数
// products/phone/src/main/ets/pages/Index.ets
import { Add } from 'base';
@Entry
@Component
struct Index {
build() {
Column() {
Text('计算两数的和:')
.fontSize(30)
Text('2+3='+Add(12,3))
.fontSize(30)
}
.height('100%')
.width('100%')
}
}
5、效果展示
https://i-blog.csdnimg.cn/direct/34a8544268224645985dee087c6186b7.png#pic_center
点击下方按钮添加微信,领取相关资料、学习方案。一键三连+关注,你的支持是我创作的动力。在这里,我乐于倾囊相授。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]