鸿蒙Harmony跨模块交互

news2024/11/12 3:31:26

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

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

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

相关文章

龙蜥 Anolis OS 7.9 一键安装 Oracle 11GR2(231017)单机版

前言 Oracle 一键安装脚本,演示 龙蜥 Anolis OS 7.9 一键安装 Oracle 11GR2(231017)单机版过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址…

【MySQL】10. 复合查询(重点)

复合查询(重点) 前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。 1. 基本查询回顾 数据还是使用之前的雇员信息表 在标题7的位置! mysql> select * from emp where sal > 500 or job MANAG…

python知识点总结(九)

python知识点总结九 1、TCP中socket的实现代码实现TCP协议a、服务端b、客户端: 2、写装饰器,限制函数被执行的频率,如10秒一次3、请实现一个装饰器,通过一次调用函数重复执行5次4、写一个登录装饰器对一下函数进行装饰&#xff0c…

一道很有意思的题目(考初始化)

这题很有意思,需要你对初始化够了解才能解出来 ,现在我们来看一下吧。 这题通过分析得出考的是初始化。关于初始化有以下知识点 (取自继承与多态(继承部分)这文章中) 所以根据上方那段知识点可知&#xf…

聊聊k8s服务发现的优缺点

序 本文主要研究一下使用k8s服务发现的优缺点 spring cloud vs kubernetes 这里有张spring cloud与kubernetes的对比,如果将微服务部署到kubernetes上面,二者有不少功能是重复的,可否精简。 这里主要是讲述一下如果不使用独立的服务发现&am…

008——根文件系统(基于鸿蒙liteos-a内核)

目录 一、根文件系统 1.1 鸿蒙根文件系展示 1.2 根文件系统的内容 1.3 根文件系统的制作 1.3.1 Makefile分析 1. ROOTFS目标: 2. 编译APP 1.3.2 演示 二、正式版本的init进程 1.1 测试版本 1.2 正式版本 1.2.1 配置文件 1. 分析配置文件 2. 示例 3. …

MinIO+Docker从零搭建一个文件存储服务

本文,将带你使用 MinIO Docker 来从零搭建一个文件存储服务,并在 SpringBoot 项目中上传图片到 MinIO 中。 一.为什么要自己搭建? 对于个人来说,当然是攻击风险。第三方对象存储服务通常会收取费用,尤其随着数据量的…

[自研开源] MyData 数据集成之任务调度模式 v0.7

开源地址:gitee | github 详细介绍:MyData 基于 Web API 的数据集成平台 部署文档:用 Docker 部署 MyData 使用手册:MyData 使用手册 试用体验:http://demo.mydata.work 交流 Q 群:430089673 概述 本…

[C++]C/C++内存管理——喵喵要吃C嘎嘎5

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

vscode 问题汇总

vscode vscode 问题汇总 一: vscode 大纲 文档中找不到符号二:vscode 找不到头文件三:级目录 一: vscode 大纲 文档中找不到符号 报错原因: 缺少c/c必要插件 安装插件:名称: C/C名称: C/C Extension Pack名称: C Intellisense名称: CMake名称: CMake To…

学习网络编程No.15【高级IO之多路转接】

引言: 北京时间:2024/3/19/11:16,若是说记忆有克星的话,那么一定是时间。若是说耐心有克星的话,那么一定是人的心态。连续几天睡眠问题,加上环境影响,上篇博客还有部分知识只能放在该篇博客介绍…

太牛逼了!视频号下载器手机版(工具+方法)绝了

在众多的视频号下载中,可以说这个工具真的是很牛逼了!这里问大家一个问题! 你使用视频号下载工具以及视频号下载器都会不会因时间导致而失效呢? 自从小编使用了这款工具后,就不会因为视频失效而烦恼。 很多人免费推荐…

c++进阶(c++里的多态)

文章目录 1.多态的概念1.1多态的概念 2.动态的定义及实现2.1多态的构成条件2.2虚函数2.3虚函数的重写虚函数重写的两个例外 2.4 C11 override和final2.5重载、覆盖(重写)、隐藏(重定义)的对比 3.抽象类3.1概念3.2接口继承和实现继…

记录微信小程序云开发的增删改查

目录 一、准备工作 1、创建集合添加数据 2、设置数据权限 3、小程序连接数据库 二、增删改查 1.查 1、查询单集合所有数据 2、条件查询 1、直接:相当于等于 2、调用指令 3、查询单条(根据id查询) 2.增 3.改 4.删 一、准备工作 1、创建集合添…

Linux--任务管理与守护进程

目录 任务管理 进程组概念 作业概念 会话概念 补充 守护进程 基本概念 守护进程的查看 守护进程的创建 自己手写守护进程 使用系统调用函数创建守护进程 任务管理 进程组概念 每一个进程除了有一个进程ID之外,还有一个进程组ID,进程组是一个或…

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

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

光致发光荧光量子产率测试光纤光谱仪

光致发光荧光量子产率测试系统是一种用于测量材料发光效率的高精度设备,它通过光致发光方法来确定样品的发射效率。光致发光荧光量子产率测试系统不仅提供了一种高效、可靠的测量手段,而且对于提升科学研究和工业应用中的发光材料性能具有重要作用。通过…

Python:基础语法

一、import与from.....import 有时候我们需要使用一些第三方库或包时,我们就需要通过import或from.....import导入模块。 # 导入库 import sys print("hello,world") 当我们自己写了些函数,在其他py文件,我们也可以通过from.....im…

【Java程序设计】【C00361】基于Springboot的考勤管理系统(有论文)

基于Springboot的考勤管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 🍅文末点击卡片获取源码🍅 开发环境 运行环境:推荐jdk1.8; 开发工具:eclipse以及idea&…

「10」文本(GDI+):添加文字,可设置背景添加移动效果

「10」文本(GDI)添加文字,可设置背景添加移动效果 在OBS软件里,通过来源组件「文本(GDI)」,您可以添加任意您想要呈现的文字,在直播窗口中显示,它可以是提示语、广告词、…