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

鸿蒙Harmony跨模块交互

1. 模块分类介绍

鸿蒙系统的模块一共分为四种,包括HAP两种和共享包两种

HAP(Harmony Ability Package)

  • Entry:项目的入口模块,每个项目都有且只有一个。
  • feature:项目的功能模块,内部模式和Entry完全相同,就是不承担作为入口的功能。

共享包(共享包无法使用UIAbility和其他ExtentionsAbility,你可以近似理解成共享包不能使用Android的四大组件):

  • Harmony Archive(HAR):静态共享包,在每个引用他的模块里面都会复制一份自己的编译产物。跟随他的引用包一起编译。
  • Harmony Shared Package(HSP):动态共享包,在所有引用他的模块中,只会有一个他的编译产物。他可以自己编译。
    在这里插入图片描述

UIAbility类比就是Android四大组件中的Activity,而我们平时用的带@Entry标签的UI组件,可以理解为是Fragment或者说是View。
和Android不同的是,在鸿蒙系统中,UIAbility并不会像Activity中那样频繁被创建,我们一般都通过UI组件来进行页面的切换和跳转。

四种不同的包的区分方式,查看该module中的src/main/module.json5文件里面的type字段
在这里插入图片描述

2. 导入本地模块

导入模块要做三件事

  1. 如果是本地模块的话,你需要先创建该模块,new一个Module出来
  2. 在全局里面加入该模块,有三个不同的操作方式,效果都是一样的。
    • 在项目的oh-package.json5的dependencies中添加该模块,然后点击界面上方的sync。
      在这里插入图片描述

    • 直接在你需要的添加该模块的模块的oh-package.json5的dependencies中加入该模块,然后他会报错要你ohpm install该模块,照做即可。

    • 直接在终端执行ohpm install指令将模块加入。如目标模块的名称为HarLibrary,指令就为:ohpm install file:./HarLibrary。
      在这里插入图片描述

  3. 在目标模块中引用,也就是2.2中提到的在dependencies中添加即可引用。

3. 使用模块内的类

每个模块中的类,如果想要被其他模块调用的话,需要做以下两部

  1. 将该类声明为export。
    在这里插入图片描述
  2. 在该模块的Index.ets文件中,添加该类。
    在这里插入图片描述
    这样就可以被其他工程调用了。

4. 跳转模块内的Entry

如果我在共享包里面写了一个ArkUI,但是我又想在其他页面中通过跳转的方式打开的话该怎么办呢?

router.pushUrl此时的语法为:
'@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'
其中,包名在项目的AppScope/app.json5文件中,
在这里插入图片描述
模块名就是你在dependences中引用时取的名字。
之后在编辑配置中,打开Deploy Multi Hap,然后勾选目标包即可
在这里插入图片描述在这里插入图片描述
必须要Build应用才能看效果,Preview是不行的。

其他方法

还有一个不算方法的方法,就是先将目标页面export出来之后,在需要使用该页面的模块中,通过一个空的Entry引用该模块来达成一个间接的打开页面的功能,如图。
在这里插入图片描述
之后只需要打开ModuleIndex,就相当于打开了MainPage,只能说如果正常跳转遇到了没办法解决的问题就用该办法吧。

参考资料

https://developer.huawei.com/consumer/cn/forum/topic/0208145626180602082

相关文章:

鸿蒙Harmony跨模块交互

1. 模块分类介绍 鸿蒙系统的模块一共分为四种,包括HAP两种和共享包两种 HAP(Harmony Ability Package) Entry:项目的入口模块,每个项目都有且只有一个。feature:项目的功能模块,内部模式和En…...

由浅到深认识Java语言(30):集合

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…...

Python学习笔记(二)

一:异常: 1.1:异常处理: 1.2:异常捕获: 1.3:异常传递: 二:模块: 2.1:模块的定义: 2.2:模块的导入: 2.3&…...

5.域控服务器都要备份哪些资料?如何备份DNS服务器?如何备份DHCP服务器?如何备份组策略?如何备份服务器状态的备份?

(2.1) NTD(域控数据库)备份 (2.2)DNS备份 (2.3)DHCP备份 (2.4)组策略备份 (2.5)CA证书备份 (2.6)系统状态备份 (2.1)…...

TCP与UDP:网络协议的技术原理与要点

文章目录 1. TCP(传输控制协议)1.1 面向连接1.1.1 三次握手1.1.2 为什么需要三次握手?1.1.3 四次挥手1.1.4 为什么需要四次挥手? 1.2 可靠性1.3 有序传输1.4 流量控制1.5 拥塞控制 2. UDP(用户数据报协议)2…...

vue-office/docx插件实现docx文件预览

1.下包 //预览docx文件 npm install vue-office/docx vue-demi//如果是vue2.6版本或以下还需要额外安装 vue/composition-api2.引入 <template><div>//在src填入文档地址<VueOfficeDocx srchttp://...../xx.docx style"width:80%" rendered"re…...

STM32—控制蜂鸣器(定时器)

目录 1 、 电路构成及原理图 2 、编写实现代码 main.c tim_irq.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 定时器中断是利用定时器的计数功能&#xff08;向上计数或向下计…...

【React】使用 JSX 为 JavaScript 添加标签

使用 JSX 为 JavaScript 添加标签实际上是将 JSX 语法与 JavaScript 代码结合使用&#xff0c;以描述用户界面。JSX 允许你在 JavaScript 中编写类似 HTML 的结构&#xff0c;并最终由 React 库将其转换为真正的 DOM 元素。以下是将标签引入 JavaScript 以及将 HTML 转化为 JSX…...

Docker构建多平台(x86,arm64)构架镜像

这里写自定义目录标题 背景配置buildx开启experimental重启检查 打包 背景 docker镜像需要支持不同平台架构 配置buildx 开启experimental vi /etc/docker/daemon.json {"experimental": true }或者 重启检查 # 验证buildx版本 docker buildx version# 重启do…...

python爬虫基础-----运算符(第三天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…...

Itextpdf电子签章

印章 印章是我国特有的历史文化产物&#xff0c;古代主要用作身份凭证和行驶职权的工具。它的起源是由于社会生活的实际需要。早在商周时代&#xff0c;印章就已经产生。如今的印章已成为一种独特的&#xff0c;融实用性和艺术性为一体的艺术瑰宝。传统的印章容易被坏人、小人…...

两台电脑简单的通信过程详解(经过两个路由器,不同网段)

一、eNSP拓扑图 二、配置4台电脑的IP地址、子网掩码、网关地址。 三、配置路由器 注意拓扑图的接口与本博客是否相符&#xff0c;判断以下命令中的ip是否需要修改。 1.AR1-接口对应IP <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入0/0/0接口 [Huawei-GigabitE…...

Java基于微信小程序的助农扶贫系统的研究与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#…...

RocketMq方便测试,提供一个controller的接口,支持拉取消息,查看消息内容

通过一个REST API接口动态地启动RocketMQ的消费者&#xff0c;并基于传入的参数&#xff08;topicName&#xff0c;filterExpression&#xff0c;consumerGroupId&#xff09;决定要监听哪些消息。在Spring Boot项目中&#xff0c;这通常不是推荐的做法&#xff0c;因为消息消费…...

win10 下Msys2编译FFmpeg的流程方法

安装Msys MSYS2官网 安装... 将\msys64\usr\bin加入环境变量 Mysy2中输入 pacman –Syu pacman –Su pacman -S git patch unzip pacman -S mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-yasm pacman -S mingw-w64-x86_64-SDL2 pacman -S mingw-w64-x86_6…...

用 Delphi 做 FTP 服务器以及如何配置防火墙

使用 Delphi 的 TIdFTPServer 这个控件&#xff0c;做一个 FTP 服务器很简单。可以直接拿官方提供的 FTP Server 的那个 Demo 程序来修改。 本文主要描述如何配置服务器端防火墙 网络环境&#xff1a; 1. 客户端在路由器后面&#xff0c;局域网&#xff1b; 2. 服务器端在路…...

《SQL必知必会第五版》第十四章(组合查询)挑战题

1. 编写 SQL 语句&#xff0c;将两个 SELECT 语句结合起来&#xff0c;以便从 OrderItems表中检索产品 ID&#xff08;prod_id&#xff09;和 quantity。其中&#xff0c;一个 SELECT 语句过滤数量为 100 的行&#xff0c;另一个 SELECT 语句过滤 ID 以 BNBG 开头的产品。按产品…...

elasticsearch+kibana安装部分问题:

1.elasticsearch启动问题&#xff1a; 如果elasticsearch开启https登录则第一次启动的时候需要前台启动&#xff0c;前台启动的时候会自己创建相应的token等登录信息,如果是后台启动则没有这些登录信息&#xff1a; ./elasticsearch ━━━━━━━━━━━━━━━━━━━…...

Python---常用的web框架

目录 Django创建Django项目启动Django项目引入APP视图函数例如纯文本JSON格式数据重定向渲染页面返回错误提示 FlaskPyramidTornado Django 特点&#xff1a;Django是一个全功能的Web框架&#xff0c;提供了许多内置的功能和工具&#xff0c;如ORM、表单处理、认证等。它的设计…...

Jenkins Docker 部署指南

Jenkins Docker 部署指南 本文档为您提供了在 Docker 容器中部署 Jenkins 的全面指南&#xff0c;使用的是阿里云的容器镜像服务。请仔细遵循以下步骤以确保成功设置。 前提条件 主机上安装了 Docker。拥有阿里云容器镜像服务的账户。 部署步骤 1. 登录阿里云容器镜像服务…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解

文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...