《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 构建公共能力层》

news2024/11/24 13:48:33

上一篇大概说了 《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 构建基础特性层》,这一篇继续开发 构建公共能力层

公共能力层

  • 主要针对公共能力层的各子目录将被编译成HAR包,而他们只能被产品定制层和基础特性层所依赖,不允许存在反向依赖。比如 网络请求模块、公共UI模块、工具模块。

1.这次创建命名为 commons的目录,用于存放公共的


2.目前先创建三个模块,分别是网络请求模块、公共UI模块、工具模块,分别对应network、uicomponents、utils。
如何创建HAR模块,这里不再详细说,请看上一篇文章https://juejin.cn/post/7429590344205418523 。

  • features目录下的几个模块分别导入公共能力层三个依赖(非必须,需要什么导入什么),导入后就可以使用公共能力层里面的东西了。
"dependencies": {
  "network": 'file:../../commons/network',
  "uicomponents": 'file:../../commons/uicomponents',
  "utils": 'file:../../commons/utils'
}

创建项目级lib、plugins

libs 本地三方依赖库,以第三方库zrouter举例

1.创建libs目录,把第三方库放到目录里,本地依赖放到项目级的oh-package.json5里,RouterApi文件在源码里

"dependencies": {
  // 本地依赖
  "@hzw/zrouter": "file:libs/RouterApi.har",
  // 远程依赖
  // "@hzw/zrouter": "^1.0.7"
},

2.Sync Now 后,项目级oh_modules里并没有这个依赖,鼠标放到"file:libs/RouterApi.har" 上提示,点Run ‘ohpm instal’ 后报错了(图2),报有些依赖项名称与实际包名称不一致,想到了上一篇讲的,name要和HAR模块里的name保持一致,根据错误信息给了提示,我们把"routerApi" 改成 “@hzw/zrouter”,成功了(图3)。

plugins 本地插件依赖库

1.和上面的大差不差,在项目根目录的hvigor目录的hvigor-config.json5文件中配置安装。此时不用太关注hvigor的作用,后期会持续介绍。

"dependencies": {
// 本地依赖
"router-register-plugin":"file:../plugins/router-register-plugin-1.0.9.tgz"
// 远程依赖
// "router-register-plugin":"1.0.9"

},

工程目录,请看README.md

https://gitee.com/jiaojiaoone/explore-harmony-next/blob/master/README.md

  • 以往系列文章
  1. 《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 模块化基础篇》
  2. 《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 构建基础特性层》

若本文对您稍有帮助,诚望您不吝点赞,多谢。

有兴趣的同学可以点击查看源码

  • gitee:https://gitee.com/jiaojiaoone/explore-harmony-next.git
  • github:https://github.com/JasonYinH/ExploreHarmonyNext.git

结语

经过以上三篇文章的阐述,想必您对模块化已经有了一定程度的认识和理解。然而,如果您想要更加深入地探究模块化的奥秘,获取更全面、更详尽的知识,还是需要多多查阅官方文档。官方文档作为权威的参考资料,能够为您提供最准确、最前沿的信息和指导,帮助您在模块化的学习和实践道路上走得更远、更稳。希望您在探索的过程中不断积累经验,取得更大的进步。祝您学习顺利!

欢迎加我微信一起交流:+V:yinshiyuba

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2229747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序与私域流量圈层

摘要:本文探讨了私域流量圈层的特点以及其在当今时代的重要性,分析了开源 AI 智能名片 21 链动模式 S2B2C 商城小程序源码在私域流量圈层构建中的作用,阐述了产品在圈层时代被标签化的现象,并以实例展示了如何利用该小程序源码打造…

【网络】传输层协议TCP(中)

目录 四次挥手状态变化 流量控制 PSH标记位 URG标记位 四次挥手状态变化 之前我们讲了四次挥手的具体过程以及为什么要进行四次挥手,下面是四次挥手的状态变化 那么我们下面可以来验证一下CLOSE_WAIT这个状态,这个状态出现的条件是后调用close的一方…

11款PDF阅读器深度体验分享!你选哪一款?

不管是哪个行业还是哪个职位,每天处理的文件中,PDF格式的文档占据了相当大的比例。为了提高工作效率,我尝试了市面上几款流行的PDF阅读器,下面来和大家分享我用过的11款PDF阅读软件怎么样吧。 一、福昕PDF编辑器 直达通道&#…

Gradle篇(入门到精通)

目录 一、前言 1. 项目构建历史 1.1. 传统方式 1.2. 构建工具 1.3. Gradle 2. 初始 groovy 2.1. 什么是 Groovy 2.2. Groovy 安装环境 2.3. groovy 与 Java 对比 3. groovy 特性 3.1. 基础语法 3.2. 闭包 二、gradle 实战 1. Gradle 环境搭建 1.1. 安装 gradle …

8.FreeRTOS之软件定时器

什么是定时器? 简单可以理解为闹钟,到达指定一段时间后,就会响铃。 STM32 芯片自带硬件定时器,精度较高,达到定时时间后会触发中断,也可以生成 PWM 、输入 捕获、输出比较,等等,功…

MySQL 9从入门到性能优化-系统信息函数

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

人脸识别算法 - 专利1分析

专利CN117576758A中说明了一种人脸识别算法的整体识别流程,本文将对这篇文章进行详细讲解,并说明有创造性的算法部分。 前置知识:人脸识别 人脸识别技术是一种通过计算机技术和模式识别算法来识别和验证人脸的技术。它能够用于识别人脸的身份…

Linux之nfs服务器和dns服务器

NFS服务器 NFS(Network File System,网络文件系统),NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统 中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。 注&am…

第十八章 用于大型程序的工具

18.1 异常处理 异常处理机制允许程序中独立开发的部分能够在运行时就出现的问题进行通信并做出相应的处理。异常使得问题的检测与解决过程分离开来。 18.1.1 抛出异常 当执行一个throw时,跟在throw后面的语句将不再被执行。相反,程序的控制权从throw转…

红米K80入网,骁龙8至尊版加持主打极致性价比

小米年度旗舰小米 15、15Pro 已经于本周二正式发布,不过 4499 元与 5299 元起售价想必劝退了不少追求极致性价比的小伙伴儿。 于是有同学表示:接下来人民的希望就全看旗舰捍门员红米了。 好消息是,目前新款红米 K80 系已获入网许可&#xff0…

ARM base instruction -- bfi

Bitfield Insert copies a bitfield of <width> bits from the least significant bits of the source register to bit position <lsb> of the destination register, leaving the other destination bits unchanged. 位域插入将<width>位的位域从源寄存器的…

uicc.hci.service的理解

一、uicc.hci.framework的java类 (1) HCIDevice i : getHCIservice 判断获取的service能否实现&#xff0c;若可以则调用并实现serviceimp&#xff0c;并记录appid。 ii : isHCIServiceAvaliable 用于获取service可用性的信息&#xff0c;返回0代表可用。 二、uicc.hci.servic…

更安全高效的文件传输工具,Ftrans国产FTP替代方案可以了解

文件传输协议&#xff08;FTP&#xff09;&#xff0c;诞生于1971年&#xff0c;自20世纪70年代发明以来&#xff0c;FTP已成为传输大文件的不二之选。内置有操作系统的 FTP 可提供一个相对简便、看似免费的文件交换方法&#xff0c;因此得到广泛使用。 随着企业发展过程中新增…

在元神操作系统启动时自动执行任务脚本

1. 背景 本文主要介绍让元神操作系统启动时自动执行任务脚本的方法&#xff0c;适用于无人化任务执行目的。将任务脚本及相关的应用程序准备好之后&#xff0c;把装有元神操作系统的U盘插入目标电脑&#xff0c;然后打开电脑电源就会自动完成所设置的任务。 2. 方法 &#x…

优雅的LUA数据记录方法-serpent序列化+LUA Table

目录 简述如何集成&#xff1f;如何使用序列化 反序列化 参考 简述 项目里需要使用LUA脚本将数据记录到文件&#xff0c;要方便的增加、查找、删除&#xff0c;要方便的加载与存回。 使用序列化/反序列化 lua table可以很容易实现这些功能。 序列化将table转换为字符串 反序列…

jmeter脚本-请求体设置变量and请求体太长的处理

目录 1、查询接口 1.1 准备组织列表的TXT文件&#xff0c;如下&#xff1a; 1.2 添加 CSV数据文件设置 &#xff0c;如下&#xff1a; 1.3 接口请求体设置变量&#xff0c;如下&#xff1a; 2、创建接口 2.1 见1.1 2.2 见1.2 2.3 准备创建接口的请求体TXT文件&#xff…

Sonatype Nexus 部署手册

文章目录 一、前言二、软件环境2.1 版本变更&#xff1a;2.1.1 变更存储的原因2.2.2 H2作为存储的注意点 三、资源配置四、开始部署4.1 部署jdk174.2 离线部署nexus4.2.1 下载4.2.2 部署1. 上传到服务器2. 解压3. 添加用户4. 修改启动参数5. 迁移sonatype-work &#xff0c;并授…

servlet开发

一、Servelet &#xff08;一&#xff09;Servelet概述 1.概念&#xff1a;Severlet是一门动态web资源开发技术。 2.本质&#xff1a;Severlet本质是一段Java程序&#xff0c;但和Java程序不同的是&#xff0c;Severlet程序无法独立运行&#xff0c;需要放服务器中&#xff…

opencv - py_imgproc - py_houghlines and py_houghcircles 霍夫线和圆变换

文章目录 1.霍夫线变换目标理论 OpenCV 中的霍夫变换概率霍夫变换其他资源 2.霍夫圆变换目标理论 1.霍夫线变换 目标 在本章中&#xff0c; 我们将了解霍夫变换的概念。我们将了解如何使用它来检测图像中的线条。我们将看到以下函数&#xff1a;cv.HoughLines()、cv.HoughLi…

数据结构 ——— 用堆解决TOP-K问题

目录 何为TOP-K问题 用堆解决TOP-K问题 代码实现 何为TOP-K问题 比如&#xff1a;整个专业的前10名&#xff0c;世界500强&#xff0c;富豪榜&#xff0c;游戏中前100的活跃玩家等 对于 TOP-K 问题&#xff0c;能想到的最简单直接的方式就是排序 但是&#xff0c;如果数据…