鸿蒙HarmonyOS开发:如何使用第三方库,加速应用开发

news2024/11/16 1:56:16

文章目录

      • 一、如何安装 ohpm-cli
      • 二、如何安装三方库
        • 1、在 oh-package.json5 文件中声明三方库,以 @ohos/crypto-js 为例:
        • 2、安装指定名称 pacakge_name 的三方库,执行以下命令,将自动在当前目录下的 oh-package.json5 文件中自动添加三方库依赖。
      • 三、解决"Cannot find module" 错误
      • 四、如何在项目中使用三方库
      • 五、使用示例详细介绍
        • 1、axios
        • 2、crypto-js

一、如何安装 ohpm-cli

ohpm 依赖于 node 运行时,支持 node.js 16.x 及以上版本,请提前安装 nodejs。

下载 ohpm 工具包,点击链接获取。

解压文件,进入“ohpm/bin”目录,打开命令行工具,执行 init 命令,安装 ohpm。

  • 安装完成之后,执行如下命令:
ohpm -v

终端输出为版本号(如:1.0.0),则表示安装成功。

若您想在其他目录使用 ohpm-cli,请将安装 bin 目录路径配置到系统环境变量 path 中。

在这里插入图片描述

  • 安装三方库
ohpm install <package_name>
  • 测试三方库是否正确安装

为了确认 ohpm install 是否正常执行,可检查安装目录下 oh_modules 目录是否存在,并且其中是否包含您所安装三方库的目录。在安装目录下执行以下命令可进行查看:

ohpm ls <package_name>
  • 更新三方库
ohpm update <package_name>
  • 卸载直接依赖的三方库
ohpm uninstall <package_name>

二、如何安装三方库

OpenHarmony三方库中心仓:https://ohpm.openharmony.cn/

  • 安装的依赖文件
    entry/oh_modules

项目中只能引用 oh_modules 目录下的三方库,若您引用的三方库未安装在 oh_modules 目录下,请先下载安装三方库。

  • oh-package.json5 文件

须在 oh-package.json5 文件中 dependencies 字段中列出引用的三方库,其版本号遵循 semver 规范。

{
  "dependencies": {
    "fooLib": "file:./fooLib.har",  // 本地压缩包引用
    "foler": "file:../folder",  // 本地文件夹引用
    "remoteLib1": "1.0.0"  // 远程引用,固定版本
    "remoteLib2": "~3.2.1"  // 远程引用,保持主版本和次版本不变,patch 版本可更新到最新版本。即 3.2.1 ≤ version < 3.3.0
    "remoteLib3": "^3.1.0"  // 远程引用,保持主版本不变,次版本、patch 版本可更新到最新版本。即 3.1.0 ≤ version < 4.0.0
  }
}
1、在 oh-package.json5 文件中声明三方库,以 @ohos/crypto-js 为例:
"dependencies": {
   "@ohos/crypto-js": "2.0.1"
}

依赖声明之后,执行以下命令,依赖三方库会存储在当前目录的 oh_modules 目录下。

ohpm install
2、安装指定名称 pacakge_name 的三方库,执行以下命令,将自动在当前目录下的 oh-package.json5 文件中自动添加三方库依赖。
ohpm install <pacakge_name>

三、解决"Cannot find module" 错误

如果没有正确的安装三方库,而在代码中进行使用,就会出现 “Cannot find module” 错误,解决方法如下:

安装该三方库,执行以下命令:

ohpm install <package_name>

四、如何在项目中使用三方库

在您的项目中如需使用某个三方库,请引入该三方库,确保该三方库存储到 oh_module 目录中。

import { CryptoJS } from '@ohos/crypto-js'

var hash = CryptoJS.MD5("123456")

五、使用示例详细介绍

1、axios

Axios ,是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中。本库基于Axios 原库v1.3.4版本进行适配,使其可以运行在 OpenHarmony,并沿用其现有用法和特性。

  • 下载安装
ohpm install @ohos/axios
  • 需要权限
ohos.permission.INTERNET
  • 创建一个实例
const instance = axios.create({
  baseURL: 'https://www.xxx.com/info',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});
  • 发送http请求
    创建axios实例后,便可通过该实例的api来发送各种http请求,常用的api定义如下

在这里插入图片描述

  • 全局 axios 默认值
axios.defaults.baseURL = 'https://www.xxx.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
  • 拦截器
    axios可以分别为请求和响应配置拦截器,请求拦截器可在请求发送前进行拦截,响应拦截器可以在then()或者catch()方法执行前进行拦截
    在这里插入图片描述
    在拦截器中,开发者可以对请求的参数或者响应的结果做一些统一的处理,比如在请求拦截器中统一为所有请求增加token这一Header,在响应拦截器中统一处理错误响应。
// 添加请求拦截器
axios.interceptors.request.use((config:InternalAxiosRequestConfig) => {
  // 对请求数据做点什么
  return config;
}, (error:AxiosError) => {
  // 对请求错误做些什么
  return Promise.reject(error);
});


// 添加响应拦截器
axios.interceptors.response.use((response:AxiosResponse)=> {
  // 对响应数据做点什么
  return response;
}, (error:AxiosError)=> {
  // 对响应错误做点什么
  return Promise.reject(error);
});
  • 获取请求结果
    api的返回值类型均为Promise,Promise是JavaScript中用于表示异步操作结果的对象,若操作成功,其中会包含具体结果,若操作失败,其会包含错误的原因。在实际应用中,开发者可以通过该对象的then()方法来处理操作成功时的结果,通过catch()方法来处理操作失败的情况
get(...)
  .then((response:AxiosResponse)=>{
    //处理请求成功的结果
    ...
  })
  .catch((error:AxiosError)=>{
    //处理请求失败的错误
    ...
  })
  • 响应结构
    AxiosResponse是axios定义的响应结果类型,默认情况下,通过axios发送的所有请求,其成功的响应结果都是该类型。其包含的属性如下
{
  // `data` 由服务器提供的响应
  data: {},

  // `status` 来自服务器响应的 HTTP 状态码
  status: 200,

  // `statusText` 来自服务器响应的 HTTP 状态信息
  statusText: 'OK',

  // `headers` 是服务器响应头
  // 所有的 header 名称都是小写,而且可以使用方括号语法访问
  // 例如: `response.headers['content-type']`
  headers: {},

  // `config` 是 `axios` 请求的配置信息
  config: {},
  
  // `request` 是生成此响应的请求
  request: {}

  // `performanceTiming` 计算HTTP请求的各个阶段所花费的时间
  performanceTiming: http.PerformanceTiming
}
  • 使用
import axios from '@ohos/axios'

axios.get(url[, config])
.then(res)=>{
console.info("result:" + JSON.stringify(res.data));
}
2、crypto-js

本软件是移植开源软件 crypto-js 源码在OpenHarmony上进行功能适配,在OpenHarmony上已支持原库crypto-js的功能,目前crypto-js已支持的算法有:MD5、SHA-1、SHA-256、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、PBKDF2、AES、RC4、DES等。

  • 下载安装
ohpm  install @ohos/crypto-js
  • 使用说明
import { CryptoJS } from '@ohos/crypto-js'
  • 或者
import CryptoJS from '@ohos/crypto-js'
  • md5算法使用
const hash = CryptoJS.MD5("123456") //传参是需要加密的内容,返回值是加密后的数据

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

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

相关文章

面对电商渠道品牌要如何控价

在当今竞争激烈的市场环境中&#xff0c;品牌销售渠道的管理至关重要。线上和线下渠道的低价、窜货问题犹如侵蚀品牌根基的蚁穴&#xff0c;若不加以有效治理&#xff0c;品牌价值将受到严重损害。 线上渠道方面&#xff0c;除了利用系统精准监测低价情况外&#xff0c;还应注重…

手撕数据结构之二叉树

1.树 树的基本概念与结构 树是⼀种⾮线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09; 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;⽽叶朝下的。 • 有⼀个特殊的结点&…

python语言day2

字符串&#xff1a; 字符串的方法 字符串格式化&#xff1a; 输出结果&#xff1a; 姓名张三今年123岁&#xff0c;现在在北京工作,名字叫张三 text "姓名{0}今年{1}岁&#xff0c;现在在{2}工作,名字叫{0}".format("张三",123,"北京") print(t…

关于冒泡算法

一、前言 当谈及经典排序算法时&#xff0c;冒泡排序&#xff08;Bubble Sort&#xff09;无疑是最具代表性的一种。这种算法以其简单直观的特点&#xff0c;成为初学者理解排序基本概念的理想选择。本文将深入解析冒泡排序的原理、实现步骤&#xff0c;以及其在 C# 编程中的具…

【Vue】RuoYi-Vue 若依 vue3 版本安装 tailwindcss 不生效问题

解决方法 删除默认安装教程下的 postcss.config.js 将配置转移到 vite.config.js 中&#xff0c;不生效原因我推测是因为 vite.config.js 配置 postcss 这段覆盖了 postcss.config.js 所致 代码修改如下&#xff1a; 另外原博主友情提示&#xff0c;引入的TailwindCSS的样式…

已解决AttributeError: module ‘emoji‘ has no attribute ‘get_emoji_regexp‘

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

遥感技术在生态系统碳储量、碳收支、碳循环以及人为源排放反演等领域的技术发展

卫星遥感具有客观、连续、稳定、大范围、重复观测的优点&#xff0c;已成为监测全球碳盘查不可或缺的技术手段&#xff0c;卫星遥感也正在成为新一代 、国际认可的全球碳核查方法。目的就是梳理碳中和与碳达峰对卫星遥感的现实需求&#xff0c;系统总结遥感技术在生态系统碳储量…

synchronized 与 Lock 的区别

synchronized 与 Lock 的区别 1、相同点2、不同点2.1 精确性与灵活性2.2 性能2.3 使用便利性 3、示例3.1 synchronized 示例3.2 Lock 示例 4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java多线程编程中&#xff0c;synchroniz…

查找并可视化非线性关系

使用部分依赖图 (PDP)、互信息和特征重要性分析非线性关系 刚开始开车时&#xff0c;你的经验较少&#xff0c;有时还会比较鲁莽。随着年龄的增长&#xff0c;你会获得更多的经验&#xff08;和意识&#xff09;&#xff0c;发生事故的可能性也会降低。然而&#xff0c;这种趋势…

Java语言程序设计基础篇_编程练习题*16.6 (演示TextField的属性)

目录 题目&#xff1a;*16.6 (演示TextField的属性) 习题思路 代码示例 结果展示 题目&#xff1a;*16.6 (演示TextField的属性) 编写一个程序&#xff0c;动态地设置文本域的水平对齐属性和列宽属性&#xff0c;如图16-38a所示 习题思路 创建一个HBox&#xff0c;一个Labe…

【前端】记录各种控制台警告/bug

一、Element Plus 1、控制台警告&#xff1a;“Runtime directive used on component with non-element root node. The directives will not function as intended.” 错误原因&#xff1a;在 Vue 组件上使用了运行时指令&#xff08;指那些在运行时动态绑定到 DOM 元素上的指…

bilibili实习生一面0625

OSI七层模型 物理层&#xff1a;将帧中的比特传送到下一个节点&#xff08;比特&#xff09; 数据链路层&#xff1a;将数据包装成帧并传送到路径上下一个节点&#xff0c;将相邻节点间不可靠的物理链路变成可靠的逻辑链路&#xff08;帧&#xff09; 网络层&#xff1a;路由寻…

信创数据库沙龙(深圳站 | 开启报名)

信创数据库沙龙: 是一个致力于推动数据库技术创新和发展的高端交流平台&#xff0c;旨在增强国内数据库产业的自主可控性和高质量发展。这个平台汇集了学术界和产业界的顶尖专家、学者以及技术爱好者&#xff0c;通过专题演讲、案例分享和技术研讨等丰富多样的活动形式&#x…

Tkinter Canvas 如何在顶部绘制文本?

在 Tkinter 的 Canvas 上绘制文本非常简单&#xff0c;我们可以使用 create_text 方法来完成这个任务。create_text 方法允许我们指定文本的位置、内容以及字体等属性。为了确保文本绘制在顶部&#xff0c;我们可以设置 y 坐标接近 Canvas 的顶部。 1、问题背景 在使用 Tkinte…

响应式高端大气的模板源码图库素材资源下载平台网站源码,无加密无后门

好看的响应式高端网站模板源码图库素材 资源下载平台源码&#xff08;可运营&#xff09;可用于做资源网&#xff0c;功能非常的齐全无任何加密也无任何后门&#xff01;响应式高端网站模板源码图库素材 资源下载平台源码。这个是独立的网站源码&#xff0c;不依赖wordpress等第…

本地部署Perplexity 克隆:使用Llama 3.1实现高效搜索

最近&#xff0c;OpenAI宣布推出Search GPT&#xff0c;这基本上是Perplexity的改版&#xff0c;但直接由OpenAI开发。这让我非常高兴&#xff0c;因为与其让第三方使用他们的模型并提供封装服务&#xff0c;不如他们自己来做。我一直不喜欢Perplexity&#xff0c;因为他们声称…

【C++ | 泛型编程】C++函数模板详解(定义、使用、特化、重载)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Stable Diffusion绘画 | 图生图-局部重绘(三)

重绘区域 整张图片 指重绘的分辨率是应用在整个画面上的&#xff0c;会整个画面综合参与运算。 选择一片空白区域&#xff0c;提示词添加 a book&#xff1a; 操作生成图片&#xff1a; SD会觉得整个画面中&#xff0c;蒙版区域出现一本书不太合理&#xff0c;索性生成一张木…

【多模态】43、INF-LLAVA | 使用双视角裁剪和双视角增强模块来提升模型对大分辨率图片的处理能力

论文&#xff1a;INF-LLaVA: Dual-perspective Perception for High-Resolution Multimodal 代码&#xff1a;https://github.com/WeihuangLin/INF-LLaVA 出处&#xff1a;厦大 时间&#xff1a;2024.07.23 贡献&#xff1a; 提出了双视角裁剪模块&#xff08;Dual-perspe…

【后续 断点续传】前端大文件分片下载解决方案,没用你来砍我

前言 之前已经出过 大文件分片下载 的教程&#xff0c;期间也收到很多小伙伴的疑问说是功能上有点问题&#xff0c;也抽时间将一些大的问题修改了&#xff0c;验证了很多次&#xff0c;应该不会有什么问题了&#xff1b;在下载方案中涉及到断点续传部分的没有细讲&#xff0c;…