软件教程 2025年08月6日
0 收藏 0 点赞 312 浏览 2141 个字
摘要 :

文章目录 1、方法调用 2、类的调用 3、组件的调用 4、跳转共享包内的页面 5、如何使用共享包中的资源 1、定义资源 2、定义工具类 3、调用 总结 本文主要讲解HarmonyO……




  • 1、方法调用
  • 2、类的调用
  • 3、组件的调用
  • 4、跳转共享包内的页面
  • 5、如何使用共享包中的资源
    • 1、定义资源
    • 2、定义工具类
    • 3、调用
  • 总结

本文主要讲解HarmonyOS开发动态共享包多种调用方式,包括方法调用、类的调用华为组件的调用,让我们一起来学习下吧!

1、方法调用

上述创建的共享包sharelibrary中,有一个工具类Calc,里面有一个简单的求和方法add,那么在entry中如何调用sharelibrary中的add方法呢?HarmonyOS开发:动态共享包多种调用方式

其实很是简单,和Android项目一样,引入library之后,你可以调用共享包中的资源或者代码了,比如我们实现调用add方法,如下:HarmonyOS开发:动态共享包多种调用方式

需要注意得是导包,正常情况下,当你打出add方法,会有提示导包,直接确认导包即可,如果没有,可以手动进行导包,导包得路径和你映射的地址基本上是一一对应的,比如,你采用的是@xx/xx的方式,导包就如下:HarmonyOS开发:动态共享包多种调用方式

上面的案例是一个很简单的调用,给文字设置点击事件,直接调用共享包sharelibrary中,工具类Calc中的add方法。

目前貌似一切都没有问题,毕竟方法一切调用正常,我们直接运行至模拟器中查看,当然了,你也可以直接运行至HarmonyOS手机上,结果发现报错了,如下所示:HarmonyOS开发:动态共享包多种调用方式

报错的原因就是,我们未执行部署多个包,毕竟在主模块后我们又创建了一个共享包,解决如下:

选择运行模块,点击Edit Configurations:HarmonyOS开发:动态共享包多种调用方式

选择Deploy Multi Hap标签页,勾选Deploy Multi Hap Packages,选择我们的共享包即可:HarmonyOS开发:动态共享包多种调用方式

再次运行,就可以运行正常了:HarmonyOS开发:动态共享包多种调用方式

我们点击文字之后,就可以再控制台查看到,调用add求和方法之后的值了:HarmonyOS开发:动态共享包多种调用方式

2、类的调用

上面的案例是如何调用共享包中的方法,那么共享包如果有一个工具类,我们该如何调用呢?

这里我简单的创建了一个日志工具类,记住需要用export关键字进行对外暴露。HarmonyOS开发:动态共享包多种调用方式

使用和上述的方法流程一致,由于设置的是静态的方法,直接调用即可:HarmonyOS开发:动态共享包多种调用方式

3、组件的调用

组件的调用和类的调用是一致的,如下,我定义了一个简单的文本组件,记住使用export关键字,进行对外暴露。

@Component
export struct TextWidget {
  @State message: string = \'我是一个测试的文本\'

  build() {
    Text(this.message)
      .fontSize(20)
      .fontWeight(FontWeight.Bold)
  }
}

使用方式如下,就可以把TextWidget作为一个组件进行调用。

import { add, Log ,TextWidget} from \"sharelibrary\"

@Entry
@Component
struct Index {
  @State message: string = \'Hello World\'

  build() {
    Row() {
      Column() {
        TextWidget()
        Text($r(\'app.string.app_name\'))
          .fontSize(20)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            var number = add(100, 100)
            Log.log(\"求和\", \"\"+number)
          })
      }
      .width(\'100%\')
    }
    .height(\'100%\')
  }
}

4、跳转共享包内的页面

目前共享包中已经有了一个页面Index,为了便于区别,我们把里面的展示内容改为:“Hello sharelibrary”HarmonyOS开发:动态共享包多种调用方式

在entry模块中,我们就可以如下进行跳转,url格式为:’@bundle:包名/模块名/路径/页面所在的文件名(不加.ets后缀)’,具体跳转如下:

 router.pushUrl({
              url: \'@bundle:com.example.demo/sharelibrary/ets/pages/Index\'
            }).then(() => {
              console.log(\"push page success\");
            }).catch(err => {
              console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
            })

具体效果大家可以自行演示。

5、如何使用共享包中的资源

既然作为一个共享包,要给到其他模块共用,除了代码上复用之外,剩下的就是资源了,查了很多资料和文档,怎么把resources暴露出去,这可难住了,可以很负责任的告诉大家,HarmonyOS目前还不支持,这一点和Android中Library还是有很大的区别,那怎么实现呢?

实现起来也是非常的简单,既然资源不能暴露,类和方法是可以暴露的啊,也就是大家可以把资源中的属性,通过工具类做一层中转即可。

1、定义资源

在共享包中我定义了一个很简单的字符串资源,当然了你也可以定义其他类型的资源,比如数字,图片,音视频等等。HarmonyOS开发:动态共享包多种调用方式

2、定义工具类

工具类需要注意,结尾是ets类型,这是为了可以拿到Resource。HarmonyOS开发:动态共享包多种调用方式

3、调用

导包后直接调用即可。HarmonyOS开发:动态共享包多种调用方式

总结

以上就是HarmonyOS开发:动态共享包多种调用方式的详解内容,希望对你有帮助。欢迎长期关注潘子夜个人博客(www.panziye.com),学习愉快哦!

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/6505.html

管理员

相关推荐
2025-08-06

文章目录 一、Promise基础回顾 二、Promise 与 axios 结合使用场景及方法 (一)直接返回 axios …

269
2025-08-06

文章目录 一、模块初始化时的内部机制 二、常见导出写法的差异分析 (一)写法一:module.exports…

107
2025-08-06

文章目录 一、ResizeObserver详解 (一)ResizeObserver是什么 (二)ResizeObserver的基本用法 …

683
2025-08-06

文章目录 一、前期准备工作 (一)下载相关文件 (二)安装必要工具 二、处理扣子空间生成的文件…

338
2025-08-06

文章目录 一、官方文档 二、自动解包的数据类型 ref对象:无需.value即可访问 reactive对象:保持…

371
2025-08-06

文章目录 一、Hooks的工作原理 二、在if语句中使用Hook会出什么岔子? 三、React官方的Hook使用规…

843
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号