当前位置: 首页 > article >正文

鸿蒙HarmonyOS开发:一次开发,多端部署(工程级)三层工程架构

文章目录

      • 一、工程创建
        • 1、先创建出最基本的项目工程。
        • 2、新建common、features、 products 目录
      • 二、工程结构
      • 三、依赖关系
        • 1、oh-package.json5
        • 2、配置ohpm包依赖
      • 四、引用ohpm包中的代码
        • 1、定义共享资源
        • 2、在common模块index文件中导出
        • 3、在phone模块oh-package.json5文件中引入依赖
        • 4、在phone模块中import和使用这些类和函数
        • 5、效果展示

一、工程创建

1、先创建出最基本的项目工程。
  • 新建项目,选择Empty Ability,然后 Next
    在这里插入图片描述

  • 填写项目基本信息
    在这里插入图片描述

  • 可以看到DevEco Studio创建出的默认工程,仅包含一个的entry类型的模块。
    在这里插入图片描述

2、新建common、features、 products 目录
  • 在根目录新建三个目录
    在这里插入图片描述

  • 在 common 下新建一个叫 base 公共模块
    common设计为har包,新建module时选择Static Library, 内部存放全局通用的工具函数,公共配置等
    在这里插入图片描述

  • 在 features 下新建项目需要的业务模块, 如home业务模块
    feature设计为har包,新建module时选择 Static Library, 内部存放相对独立的业务单元,比如购物车 、我的 、分类、Home ,也就是首页底部Tab切换时的四个核心业务模块
    在这里插入图片描述

  • 把原本的 entry 模块 重构到products目录下,然后重命名为 phone
    products为产品层,里面放置phone模块,也就是入口模块,在phone中我们放置入口ability和所有页面级别的组件
    在这里插入图片描述

二、工程结构

“一多”推荐在应用开发过程中使用如下的“三层工程结构”。

在这里插入图片描述

  • 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中的公共代码来实现功能,可以最大程度实现代码复用。

在这里插入图片描述

配置依赖关系可以通过修改模块中的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包中的代码

模块资源如何共享?

在这里插入图片描述

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、效果展示

在这里插入图片描述


http://www.kler.cn/a/402962.html

相关文章:

  • apr共享内存
  • 小蒋聊技术:大数据驱动决策——技术落地与业务深度融合
  • Thymeleaf模板引擎生成的html字符串转换成pdf
  • 挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析
  • 如何利用ChatGPT加速开发与学习:以BPMN编辑器为例
  • 网络安全应急响应及其发展方向
  • Hadoop 架构
  • 使用 SMB 协议从win10电脑访问同网段ubuntu电脑文件
  • Node.js 笔记(一):express路由
  • 【docker】退出 `docker run`的几种方式
  • linux 常用命令指南(存储分区、存储挂载、docker迁移)
  • IDEA相关(包括但不限于快捷键,使用技巧)成长笔记
  • Unity图形学之Shader顶点变化
  • 在使用 TypeORM 的项目中,如果不希望查询返回 password 字段,可以通过以下几种方式实现
  • 说说数字化的误区
  • MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)
  • 数据建模-业务分类、数据域、主题
  • 【Linux课程学习】:对操作系统(Operator System)的理解
  • 李春葆《数据结构》——图相关代码
  • JVM垃圾回收算法详解
  • C语言内存:我家大门常打开
  • 手机ip地址异常怎么解决
  • tcn 对比 cnn-attension-gru联合模型,时间序列预测,深度神经网络
  • C# 数据结构之【链表】C#链表
  • PN、VFC、PNC局部网络管理
  • django西西家居全屋定制系统的设计与实现