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

OpenHarmony JS和TS三方组件介绍

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

查找OpenHarmony JS和TS三方组件

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

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

在这里插入图片描述

安装并使用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页面

在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页面

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.mzph.cn/news/692601.shtml

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

相关文章

文件上传漏洞--Upload-labs--Pass07--点绕过

一、什么是点绕过 在Windows系统中&#xff0c;Windows特性会将文件后缀名后多余的点自动删除&#xff0c;在网页源码中&#xff0c;通常使用 deldot()函数 对点进行去除&#xff0c;若发现网页源代码中没有 deldot() 函数&#xff0c;则可能存在 点绕过漏洞。通过点绕过漏洞&…

响应式编程要点 (Java)

整体学习概览 前置知识函数式编程Lambda表达式实践、Java8 Stream Api的使用响应式编程的原理和思想Reactive Stream的思想和Api实践Reactor思想和Api实践WebFlux的使用SpringData R2DBC 前置知识&#xff1a;函数式编程 函数式编程要点-CSDN博客 响应式编程原理和思想 全链…

SwiftUI 更自然地向自定义视图传递参数的“另类”方式

概览 在 SwiftUI 中&#xff0c;正是自定义视图让我们的 App 变得与众不同&#xff01;然而&#xff0c;除了传统的视图接口定义方式以外&#xff0c;我们其实还可以有更“银杏化”的选择。 如上图所示&#xff1a;对于 SubView 子视图所需的参数我们一开始并没有操之过急&…

[office] excel成绩表格数据排名次的教程 #职场发展#知识分享#媒体

excel成绩表格数据排名次的教程 Excel中经常需要使用到排名次的技巧&#xff0c;成绩表格数据具体该如何排名呢?接下来是小编为大家带来的excel成绩表格数据排名次的教程&#xff0c;供大家参考。 excel成绩表格数据排名次教程(一) 步骤1&#xff1a;不管在学校还是各个统计领…

MySQL8的ONLY_FULL_GROUP_BY SQL模式兼容问题

文章目录 1. 问题描述2. 解决方法1. 修改查询2. 修改SQL模式3. 使用ANY_VALUE()函数 1. 问题描述 Cause: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column btc-cloud.t1.id which is not funct…

网络入山太困难?看格行随身WiFi如何助力大山教育!

近日&#xff0c;一则关于偏远大山的上网问题冲上了热搜&#xff0c;引发了社会关注。虽然很多山区都已经通了电、通了网&#xff0c;但是在一些贫困的地区&#xff0c;网络基础设施依旧薄弱&#xff0c;村民想要使用固定宽带&#xff0c;仍然十分困难。 而在山区的学生们&…

【漏洞复现】H3C Web网管登录任意文件读取漏洞

Nx01 产品简介 H3C设备的Web网管是指H3C公司生产的网络设备的网络管理界面。它可以通过Web浏览器进行访问和操作&#xff0c;以实现对网络设备的配置、管理和监控。 Nx02 漏洞描述 jquery旧版本存在任意文件读取漏洞&#xff0c;允许攻击者在受害者的服务器上读取任意文件。H3…

SQL数据库基础语法-查询语句

SQL数据库基础语法-查询语句 Group By #对数据进行分组 >select name,count(id) from student group by name; #查询name字段人数&#xff0c;cont函数进行计数 >select * from users group by users; >select * from users where id1 group by 2; >select * from …

Excel练习:双层图表

Excel练习&#xff1a;双层图表 学习视频Excel制作双层图表&#xff0c;很多人都不会&#xff0c;其实只需1步操作就够了&#xff01;_哔哩哔哩_bilibili ​​ 通过调整两个图形的显示范围实现 增加折现图的负数显示范围&#xff0c;使折现图仅出现在整体图形的上方增加柱形…

MQ最终一致性理论与实践

MQ最终一致性理论与实践 原理 分布式事务无论是2PC&3PC还是TCC&#xff0c;基本都遵守XA协议的思想&#xff0c;但全局事务方案并发性较差&#xff1b; 最终一致性方案指的是将最有可能出错的业务以本地事务的方式完成后&#xff0c;采用不断重试的方式&#xff08;不限…

代码随想录算法训练营(贪心6)| 738.单调递增的数字 968.监控二叉树

738.单调递增的数字 题目链接/文章讲解 968.监控二叉树 &#xff08;可以跳过&#xff09; leetcode题目链接 本题是贪心和二叉树的一个结合&#xff0c;比较难&#xff0c;一刷大家就跳过吧。 题目链接/文章讲解 class Solution { private:int result;int traversal(TreeN…

视频接入协议之MIPI

MIPI&#xff08;Mobile Industry Processor Interface&#xff09;是一种用于移动设备的串行接口标准&#xff0c;旨在提供高速、低功耗、低成本的接口解决方案。MIPI联盟是一个全球性的组织&#xff0c;致力于开发、推广和管理MIPI标准。 MIPI接口包括了多种协议和规范&…

人工智能之数学基础【梯度下降法】

梯度下降法是求解无约束优化问题的一种简单而有效的优化方法,是一种利用目标函数的Taylor展开构造搜索方向的方法。 思想 梯度下降法三要素:出发点、下降方向、下降步长。用梯度下降法求解优化问题的基本思想可以类比为一个下山的过程,可微分的函数代表一座山,目标就是找…

K8S临时小结

k8s是什么&#xff1f;能解决什么问题&#xff1f; k8s是容器管理平台&#xff0c;一套复杂的开源系统 如何更好的维护pod&#xff0c;k8s第二大要素&#xff08;pod控制器&#xff09; k8s的很多对容器&#xff08;pod&#xff09;管理的高级特性&#xff0c;都是基于控制器…

4.【架构师成长之路】职场新人:如何快速变得专业(上)

文章目录 导言一、快速变得熟练1、研发类工具2、运维类工具3、泛文档类工具 二、能够系统化思考1、提升思考全面性2、提升内容逻辑性 三、最佳实践本文总结说明 导言 前三篇文章我们讲了在校期间及临近毕业时&#xff0c;你需要做一些怎样的准备。而这些准备本身不仅仅是为了毕…

【算法】树状数组

文章目录 一、基本概念二、核心操作三、常见应用 一、基本概念 树状数组用于动态维护一段区间&#xff0c;操作的时间复杂度为 O ( l o g n ) O(logn) O(logn) 定义&#xff1a; t [ i ] [ i − l o w b i t ( i ) 1 , i ] t[i] [i - lowbit(i) 1, i] t[i][i−lowbit(i)…

harmony 鸿蒙系统学习 安装ohpm报错 ohpm install failed

一. 安装配置 DevEco Studio 安装包时报错 execute ohpm install failed. Install task failed: ArkTS 3.2.12.5. Install ArkTS dependencies failed. 解决办法 找原因&#xff0c;首先&#xff0c;我的电脑中之前安装过node&#xff0c;也许是因为这个。&#xff08;其实…

Git 使用教程

一、Git的认识 1.1版本控制 什么是“版本控制”&#xff1f;我为什么要关心它呢&#xff1f; 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。 a) 还原&#xff1a;如果你是程序开发者&#xff0c;在新写一个促销活动的java文…

Linux常见基本指令

本文将详细的介绍Linux中各常见指令的用法&#xff0c;并且在每个指令都有使用样例。一共有以下指令&#xff1a; 1. man指令 2.目录基础指令&#xff1a;2.1 pwd指令、2.2 ls指令、2.3 cd指令 3.文件创建与删除&#xff1a;3.1 touch指令、3.2 mkdir指令、3.3 rmdir 指令 &…

Rabbitmq入门与应用(二)-RabbitMQ工作模型

RabbitMQ工作模型 RabbitMQ Tutorials — RabbitMQ Broker RabbitMQ服务。 Connection 生产者或是服务者都需要与Broker建立的TCP连接。 Channel 保持的TCP长连接里面去创建和释放Channel&#xff0c;从而减少资源的消耗。其中Channel是相互隔离的&#xff0c;不能共享。 Queu…