OpenHarmony JS和TS三方组件使用指导

news/2025/2/23 0:14:36

OpenHarmony JS和TS三方组件介绍

OpenHarmony JS和TS三方组件使用的是OpenHarmony静态共享包,即HAR(Harmony Archive),可以包含js/ts代码、c++库、资源和配置文件。通过HAR,可以实现多个模块或者多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

OpenHarmony_JSTS_4">查找OpenHarmony JS和TS三方组件

1.关注Gitee官网OpenHarmony-TPC三方组件资源汇总项目,根据目录索引即可找到对应分类下的具体组件。

2.访问OpenHarmony官网,通过类型,分类,以及关键字搜索需要的三方组件。

在这里插入图片描述

OpenHarmony_JSTS_12">安装并使用OpenHarmony JS和TS语言的三方组件

引用三方HAR,包括从仓库进行安装和从本地库模块中进行安装两种方式。

引用仓库安装的HAR

引用ohpm仓中的HAR,首先需要设置三方HAR的仓库信息,DevEco Studio默认仓库地址是"https://repo.harmonyos.com/ohpm/",如果您想设置自定义仓库,请在DevEco Studio的Terminal窗口执行如下命令进行设置(执行命令前,请确保将DevEco Studio中ohpm安装地址配置在“环境变量-系统变量-PATH”中):

ohpm config set registry=your_registry1,your_registry2

说明:ohpm支持多个仓库地址,采用英文逗号分隔。 然后通过如下两种方式设置三方包依赖信息:

  • 方式一:在Terminal窗口中,执行如下命令安装三方包,DevEco
    Studio会自动在工程的oh-package.json5中自动添加三方包依赖。
ohpm install @ohos/lottie
  • 方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:
"dependencies": { "@ohos/lottie": "^2.0.0"}

依赖设置完成后,需要执行ohpm install命令安装依赖包,依赖包会存储在工程的oh_modules目录下。

ohpm install

引用本地库模块的文件和资源

  • 方式一:在Terminal窗口中,执行如下命令进行安装,并会在oh-package5.json中自动添加依赖。
ohpm install ../library

方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:

"dependencies": {
   "library": "file:../library"
}

依赖设置完成后,需要执行ohpm install命令安装依赖包,依赖包会存储在工程的oh_modules目录下。

ohpm install

说明:

在引用OpenHarmony HAR时,请注意以下事项

  • 当前只支持在模块和工程下的oh-package.json5文件中声明dependencies依赖,才会被当做OpenHarmony依赖使用,并在编译构建过程中进行相应的处理。
  • 引用的模块的compileSdkVersion不能低于其依赖的OpenHarmony
    ohpm三方包(可在oh_modules目录下,找到引用的ohpm包的src > main > module.json5 中查看)。

OpenHarmony_HAR_hml_71">引用OpenHarmony HAR hml页面

在JS工程范式中,组件功能由hml承载,开发者可以在JS工程的hml页面通过标签来引入OpenHarmony HAR中的共享hml页面,示例如下:

<element name="comp" src="library/src/main/js/components/index/index.hml"></element>

其中,library为OpenHarmony HAR的包名,hml页面的路径为OpenHarmony HAR中的相对路径。
随后便可以通过设置的name来使用该element元素,以引用OpenHarmony HAR中的hml页面,示例如下:

<element name="comp" src="library/src/main/js/components/index/index.hml"></element>
<div class="container">
   <comp></comp>
   <text class="title">
      {{ $t('strings.hello') }} {{ title }}
   </text>
</div>

OpenHarmony_HAR_ArkTS_91">引用OpenHarmony HAR ArkTS页面

ArkTS是TypeScript的扩展,因此导出和引入的语法与TypeScript一致。在OpenHarmony ohpm模块中,可以通过export导出ArkTS页面,示例如下:

// library/src/main/ets/components/mainpage/MainPage.ets
@Entry
@Component
export struct MainPage {
   @State message: string = 'Hello World'
   build() { 
      Row() { 
         Column() { 
            Text(this.message)
            .fontSize(50)
            .fontWeight(FontWeight.Bold)
         } 
         .width('100%') 
      } .height('100%') 
   }
}

然后在其它模块中通过import引入导出的ArkTS页面,示例如下所示:

// entry/MainAbility/pages/index.ets
import { MainPage } from "library"
@Entry
@Component
struct Index {
   @State message: string = 'Hello World' 
   build() { 
      Column() { 
         MainPage() 
         Row() { 
            Text(this.message)
            .fontSize(50)
            .fontWeight(FontWeight.Bold)
         }
         .width('100%')
      } 
      .height('10%') 
   }
}

引用OpenHarmony HAR内ts/js方法ts/js方法的导出和引用,与ArkTS页面的引用相同,即在OpenHarmony ohpm模块中,可以通过export导出ts/js方法,示例如下所示:

// library/index.js
export function func() {
   return "[ohpm] func1";
}

然后在其它的ts/js页面中,通过import引入导出的ts/js方法,示例如下所示:

// entry/src/main/js/MainAbility/pages/index/index.js
import {func} from "library"
export default {
   data: {
      title: ""
   },
   onInit() {
      this.title = func();
   }
}

引用OpenHarmony HAR内资源支持在OpenHarmony ohpm模块和依赖OpenHarmony ohpm的模块中引用OpenHarmony ohpm模块内的资源。例如在OpenHarmony ohpm模块的scr/main/resources里添加字符串资源(在string.json中定义,name:hello_ohpm)和图片资源(icon_ohpm.png)。然后在Entry模块中引用该字符串资源和图片资源的示例如下: 当前暂不支持类Web范式引用i18n文件中的国际化资源。

// entry/src/main/ets/MainAbility/pages/index.ets
@Entry
@Component
struct Index {
   @State message: string = 'Hello World'
   build() {
      Column() {
         Row() {
            Text($r("app.string.hello_ohpm")) // 字符串资源
              .fontSize(40)
              .fontWeight(FontWeight.Bold)
         }
         .width('50%')
         Image($r("app.media.icon_ohpm")) // 图片资源
      }
      .height('100%')
   }
}

在编译构建HAP中,DevEco Studio会从HAP模块及依赖的模块中收集资源文件,如果不同模块的相同限定词目录下的资源文件出现重名冲突时,DevEco Studio会按照以下优先级进行覆盖(优先级由高到低):

  • AppScope(仅API 9的Stage模型支持)
  • HAP包自身模块
  • 依赖的OpenHarmonyHarmony ohpm模块

作为一名合格一线开发程序员,大家心里肯定会有很多疑问!鸿蒙系统这么强大~~

为了能够让大家跟上互联网时代的技术迭代,在这里跟大家分享一下我自己近期学习心得以及参考网上资料整理出的一份最新版的鸿蒙学习提升资料,有需要的小伙伴自行领取,限时开源,先到先得~~~~

领取以下高清学习路线原图请点击→(↓)纯血鸿蒙HarmonyOS基础技能学习路线图

鸿蒙全套学习指南icon-default.png?t=N7T8https://docs.qq.com/doc/DZWN1TnRDeE5yWXNL

在这里插入图片描述
领取以上完整高清学习路线图,请点击(↓)小编自己整理的部分学习资料(包含有高清视频、开发文档、电子书籍等)

鸿蒙开发学习之应用模型icon-default.png?t=N7T8https://docs.qq.com/doc/DZXhBdXFJeHJBYWti

在这里插入图片描述

以上分享的学习路线都适合哪些人跟着学习?

  • -应届生/计算机专业通过学习鸿蒙新兴技术,入行互联网,未来高起点就业。
  • -0基础转行提前布局新方向,抓住风口,自我提升,获得更多就业机会。
  • -技术提升/进阶跳槽发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术,享受蓝海红利。

在这里插入图片描述

最后

鸿蒙开发学习是一个系统化的过程,从基础知识的学习到实战技能的锤炼,再到对前沿技术的探索,每一环节都至关重要。希望这份教程资料能帮助您快速入门并在鸿蒙开发之路上步步攀升,成就一番事业。让我们一起乘风破浪,拥抱鸿蒙生态的广阔未来

如果你觉得这篇内容对你有帮助,我想麻烦大家动动小手给我:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

关注我,同时可以期待后续文章ing,不定期分享原创知识。

想要获取更多完整鸿蒙最新VIP学习资料,请点击(↓)

鸿蒙基础入门学习指南icon-default.png?t=N7T8https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG


http://www.niftyadmin.cn/n/5390544.html

相关文章

前后端联调可能出现的问题

调不到后端数据 前后端传参方式不一样 --- formdata 主要接收文件 或者有文件和数据 --- json 纯数据

杂题——1106: 奖学金

题目描述 某小学最近得到了一笔赞助&#xff0c;打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末&#xff0c;每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序&#xff0c;如果两个同学总分相同&#xff0c;再按语文成绩从高到低排序&#xff0c;…

B站如何创作合集视频

https://www.bilibili.com/video/BV1Qh411n74d/?vd_source6824a60429337b880936b4f7a2d42d38

学习数据节构和算法的第13天

单链表 ​ 单链表是一种常见的数据结构&#xff0c;由一个个节点组成。 每个节点包含两个部分&#xff1a;数据部分和指针部分。 **数据部分&#xff1a;**存储节点中的具体数据。可以是任何类型的数据&#xff0c;如整数、浮点数、字符串等。 **指针部分&#xff1a;**指向…

性能优化——canvas 加载海量图

背景 公司的在线设计稿平台的画板列表页开发时由于数据量不足&#xff0c;未能测出关于画板列表页性能问题&#xff0c;在经过用户一段时间的使用后出现了关于初始化卡顿、缩放卡顿等问题&#xff0c;画板列表页采用了vue-konva 原因 关于画板列表为何卡顿有如下几点原因 1、…

部署:docker-compose

一、下载 #下载docker-compose文件 curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose# 到下载目录 cd .. cd /usr cd local cd bin#将文件复制到/usr/local/bin环境变量下面 mv dock…

Window部署ElasticSearch

下载参考文档&#xff1a;C# ElasticSearch环境搭建与使用_c# elasticsearch helper-CSDN博客 版本&#xff1a; ElasticSearch&#xff1a;7.17.5 jdk&#xff1a;11.0.10 1、下载后解压缩目录结构 2、修改config目录文件elasticsearch.yml 取消注释下面节点 cluster.name…

设计模式-抽象工厂模式(C++)

抽象工厂模式是一种设计模式&#xff0c;它提供了一个接口来创建一系列相关或相互依赖的对象&#xff0c;而无需指定它们具体的类。下面是一个使用 C 实现抽象工厂模式的示例&#xff1a; // 抽象产品类 class AbstractProductA { public:virtual void DoSomething() 0; };cl…