当前位置: 首页 > news >正文

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

文章目录

      • 一、如何安装 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") //传参是需要加密的内容,返回值是加密后的数据

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MAML算法详解
  • Oracle RAC 集群启动顺序
  • C语言——位运算
  • linux系统使用 docker 来部署web环境 nginx+php7.4 并配置称 docker-compose-mysql.yml 文件
  • 【第一章概述—计算机中的数制】非十进制数到十进制数的转换,八进制转十进制,16进制转十进制。十进制转8进制,十进制转16进制
  • SSRF漏洞实现
  • Flask返回Json格式字符,中文导致unicode乱码问题
  • Unity URP Shader 修改深度让人物不再被地面遮挡
  • 数论之组合数
  • git cherry-pick 合并多个提交
  • Go 调用Rust函数
  • 浅谈线性表——链表
  • AI编程简介
  • 【第69课】Java安全JWT攻防Swagger自动化算法签名密匙Druid未授权
  • java-Mybatis框架
  • CSS居中完全指南——构建CSS居中决策树
  • java第三方包学习之lombok
  • LeetCode算法系列_0891_子序列宽度之和
  • MySQL几个简单SQL的优化
  • spring cloud gateway 源码解析(4)跨域问题处理
  • tweak 支持第三方库
  • unity如何实现一个固定宽度的orthagraphic相机
  • 官方解决所有 npm 全局安装权限问题
  • 来,膜拜下android roadmap,强大的执行力
  • 面试总结JavaScript篇
  • 配置 PM2 实现代码自动发布
  • 再谈express与koa的对比
  • 栈实现走出迷宫(C++)
  • 智能网联汽车信息安全
  • (13)DroneCAN 适配器节点(一)
  • (175)FPGA门控时钟技术
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (二十六)Java 数据结构
  • (南京观海微电子)——I3C协议介绍
  • (一)WLAN定义和基本架构转
  • (一)为什么要选择C++
  • (译)2019年前端性能优化清单 — 下篇
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ***详解账号泄露:全球约1亿用户已泄露
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET Core引入性能分析引导优化
  • .NET Framework .NET Core与 .NET 的区别
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .net6Api后台+uniapp导出Excel
  • ?
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [001-03-007].第07节:Redis中的管道
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Android] Upload package to device fails #2720
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [C++] Windows中字符串函数的种类