【HarmonyOS】鸿蒙应用开发中常用的三方库介绍和使用示例

【HarmonyOS】鸿蒙应用开发中常用的三方库介绍和使用示例

截止到2025年,目前参考官方文档:访问 HarmonyOS三方库中心 。梳理了以下热门下载量和常用的三方库。
上述库的组合,可快速实现网络请求、UI搭建、状态管理等核心功能,显著提升开发效率。
版本号以三方库网站上的版本号最新为准。

一、网络与数据交互

1. ohos-axios(网络请求)

ohos-axios:适配 HarmonyOS 的 Axios 版本,支持 HTTP/HTTPS 请求、拦截器、请求取消等,语法与 Web 端 Axios 一致,降低学习成本。

"dependencies": {"@ohos/axios": "1.3.2"
}
import axios from '@ohos/axios';// 基础配置
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.timeout = 5000;// 发送GET请求
async function fetchData() {try {const response = await axios.get('/user', {params: { id: 123 }});console.log('请求成功:', response.data);} catch (error) {console.error('请求失败:', error);}
}// 拦截器示例
axios.interceptors.request.use((config) => {// 添加Tokenconfig.headers.Authorization = 'Bearer token';return config;},(error) => Promise.reject(error)
);
2. ohos-websocket(实时通讯)

ohos-websocket:封装 WebSocket 客户端,支持长连接、消息监听、断线重连,适用于实时聊天、数据推送场景。

"dependencies": {"@ohos/websocket": "2.1.0"
}
import WebSocket from '@ohos/websocket';// 初始化连接
const ws = new WebSocket('wss://echo.websocket.events');// 连接成功
ws.onopen = () => {console.log('WebSocket连接已打开');ws.send('Hello WebSocket!'); // 发送消息
};// 接收消息
ws.onmessage = (event) => {console.log('收到消息:', event.data);
};// 连接关闭
ws.onclose = (code, reason) => {console.log(`连接关闭: ${code}, ${reason}`);
};

二、UI组件与交互

1. TDesign for HarmonyOS(企业级UI)

腾讯 TDesign 适配 HarmonyOS 的版本,包含企业级 UI 组件,风格统一,覆盖表单、导航、数据展示等场景。

"dependencies": {"@tdesign/arkui-harmonyos": "0.8.5"
}
import { Button, Dialog } from '@tdesign/arkui-harmonyos';
import { Column } from '@arkui-x/components';@Entry
@Component
struct TDesignDemo {@State showDialog: boolean = false;build() {Column() {//  primary按钮Button({ type: 'primary', text: '打开弹窗' }).onClick(() => this.showDialog = true)// 弹窗组件Dialog({title: '提示',content: '这是TDesign弹窗',open: this.showDialog,onClose: () => this.showDialog = false})}.width('100%').padding(20)}
}
2. ohos-calendar(日历组件)

高性能日历组件,支持日期选择、范围选择、自定义样式。

"dependencies": {"@ohos/calendar": "3.2.1"
}
import { Calendar } from '@ohos/calendar';
import { Column } from '@arkui-x/components';@Entry
@Component
struct CalendarDemo {@State selectedDate: Date = new Date();build() {Column() {Calendar({startDate: new Date(2024, 0, 1),endDate: new Date(2025, 11, 31),selectedDate: this.selectedDate,onSelect: (date) => {this.selectedDate = date;console.log(`选中日期: ${date.toLocaleDateString()}`);}}).width('90%').height(400)}}
}

三、状态管理

1. ohos-pinia(轻量状态管理)

类似 Vue Pinia 的状态管理库,采用模块化设计,支持 TypeScript 类型推导,更简洁的 API。

"dependencies": {"@ohos/pinia": "2.2.3"
}
import { createPinia, defineStore } from '@ohos/pinia';// 1. 创建Pinia实例
const pinia = createPinia();// 2. 定义Store
const useUserStore = defineStore('user', {state: () => ({name: 'HarmonyOS',age: 3}),actions: {incrementAge() {this.age++;}},getters: {doubleAge: (state) => state.age * 2}
});// 3. 组件中使用
@Component
struct UserInfo {private userStore = useUserStore(pinia);build() {Column() {Text(`Name: ${this.userStore.name}`)Text(`Age: ${this.userStore.age}`)Text(`Double Age: ${this.userStore.doubleAge}`)Button('增加年龄').onClick(() => this.userStore.incrementAge())}}
}

四、数据存储

1. ohos-sqlite(ORM数据库)
"dependencies": {"@ohos/sqlite-orm": "4.1.0"
}
import { Database, Entity, Column, PrimaryGeneratedColumn } from '@ohos/sqlite-orm';// 1. 定义实体类
@Entity('user')
class User {@PrimaryGeneratedColumn()id: number;@Column()name: string;@Column()age: number;
}// 2. 初始化数据库
const db = new Database({name: 'myDB',entities: [User],version: 1
});// 3. 数据库操作
async function dbOperations() {const userRepo = db.getRepository(User);// 插入数据const newUser = new User();newUser.name = 'Test';newUser.age = 20;await userRepo.save(newUser);// 查询数据const users = await userRepo.find();console.log('用户列表:', users);
}

五、工具类

1. ohos-lodash(工具函数)

Lodash 的 HarmonyOS 适配版,提供字符串、数组、对象等常用工具函数(如深拷贝、防抖节流、数据格式化)。

"dependencies": {"@ohos/lodash": "4.17.21"
}
import _ from '@ohos/lodash';// 数组去重
const arr = [1, 2, 2, 3, 3, 3];
const uniqueArr = _.uniq(arr); // [1,2,3]// 深拷贝
const obj = { a: 1, b: { c: 2 } };
const copyObj = _.cloneDeep(obj);// 防抖函数
const debounced = _.debounce(() => {console.log('防抖执行');
}, 500);// 调用防抖函数(连续触发时仅最后一次生效)
debounced();

六、媒体与图形

1. ohos-glide(图片加载)

参考 Android Glide 的图片加载库,支持网络 / 本地图片加载、缓存、裁剪、圆角处理。

"dependencies": {"@ohos/glide": "2.3.0"
}
import { Glide } from '@ohos/glide';
import { Image } from '@arkui-x/components';@Component
struct ImageDemo {build() {Column() {Image().width(300).height(200).onComplete(() => {// 加载网络图片Glide.with(this).load('https://picsum.photos/300/200').placeholder($r('app.media.default_img')) // 占位图.error($r('app.media.error_img')) // 错误图.into(this); // 绑定到当前Image组件})}}
}

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

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

相关文章

SpringBoot 获取请求参数的常用注解

SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1. RequestParam用于获取查询参数(URL 参数),适用于 GET 请求或 POST 表单提交。GetMapping("/user") public String getUser(RequestParam("id"…

【Linux篇章】Socket 套接字,竟让 UDP 网络通信如此丝滑,成为一招致胜的秘籍!

本篇文章将带大家了解网络通信是如何进行的(如包括网络字节序,端口号,协议等) ;再对socket套接字进行介绍;以及一些udp-socket相关网络通信接口的介绍及使用;最后进行对基于udp的网络通信&#…

GIF图像格式

你可能已经知道,GIF 是一种光栅图像文件格式,它在不损失图像质量的前提下提供压缩功能,并且支持动画和透明度。 GIF 是“Graphics Interchange Format(图形交换格式)”的缩写。由于其良好的兼容性以及在不同应用程序和…

D3.js的力导向图使用入门笔记

D3.js是一个用于数据可视化的JavaScript库,广泛应用于Web端的数据交互式图形展示 中文文档:入门 | D3 中文网 一、D3.js核心特点 1、核心思想 将数据绑定到DOM元素,通过数据动态生成/修改可视化图形。 2、应用场景 交互式图表:如动态条…

Zookeeper的分布式事务与原子性:深入解析与实践指南

引言在分布式系统架构中,事务管理和原子性保证一直是极具挑战性的核心问题。作为分布式协调服务的标杆,Apache Zookeeper提供了一套独特而强大的机制来处理分布式环境下的原子操作。本文将深入探讨Zookeeper如何实现分布式事务的原子性保证,分…

Lua(迭代器)

Lua 迭代器基础概念Lua 迭代器是一种允许遍历集合(如数组、表)元素的机制。迭代器通常由两个部分组成:迭代函数和状态控制变量。每次调用迭代函数会返回集合中的下一个元素。泛型 for 循环Lua 提供了泛型 for 循环来简化迭代器的使用。语法如…

发布 VS Code 扩展的流程:以颜色主题为例

发布 VS Code 扩展的流程:以颜色主题为例 引言:您的 VS Code 扩展在市场中的旅程 Visual Studio Code (VS Code) 的强大扩展性是其广受欢迎的核心原因之一,它允许开发者通过添加语言支持、调试器和各种开发工具来定制和增强其集成开发环境&…

C++ 多线程(一)

C 多线程(一)1.std中的thread API 介绍开启一个线程获取线程信息API交换两个线程2.向线程里传递参数的方法第一种方式(在创建线程的构造函数后携带参数)第二种方式(Lambda)第三种方式(成员函数&…

自动驾驶训练-tub详解

在 Donkeycar 的环境里,“tub” 是一个很关键的术语,它代表的是存储训练数据的目录。这些数据主要来源于自动驾驶模型训练期间收集的图像和控制指令。 Tub 的构成 一个标准的 tub 目录包含以下两类文件: JSON 记录文件:其命名格式…

CVPR多模态破题密钥:跨模对齐,信息串供

关注gongzhonghao【CVPR顶会精选】当今数字化时代,多模态技术正迅速改变我们与信息互动的方式。多模态被定义为在特定语境中多种符号资源的共存与协同。这种技术通过整合不同模态的数据,如文本、图像、音频等,为用户提供更丰富、更自然的交互…

小米路由器3G R3G 刷入Breed和OpenWrt 插入可共享网络的usb随身WiFi

小米 R3G 参数(以下加黑加粗需要特别关注,灰常详细) 市面上有R3G和R3Gv2两种型号, 注意区分, 后者是缩水版, 没有USB口. 内存只有128M, Flash只有16M. 这里描述的只适用于R3G. 就是这样 操作步骤开始,,注&#xff1a…

SpringBoot实现Serverless:手撸一个本地函数计算引擎

前言 最近突然冒出一个想法:能不能用SpringBoot自己实现一个类似AWS Lambda或阿里云函数计算的执行引擎? 说干就干,于是从零开始设计了一套基于SpringBoot的Serverless执行框架。 这套框架支持函数动态加载、按需执行、资源隔离,甚…

Java排序算法之<插入排序>

目录 1、插入排序 2、流程介绍 3、java实现 4、性能介绍 前言 在 Java 中, 冒泡排序(Bubble Sort) 和 选择排序(Selection Sort) 之后,下一个性能更好的排序算法通常是 插入排序(Insertion …

《计算机网络》实验报告七 HTTP协议分析与测量

目 录 1、实验目的 2、实验环境 3、实验内容 4、实验结果与分析 4.1 使用tcpdump命令抓包 4.2 HTTP字段分析 5、实验小结 5.1 问题与解决办法: 5.2 心得体会: 1、实验目的 1、了解HTTP协议及其报文结构 2、了解HTTP操作过程:TCP三次…

面试实战,问题十三,Redis在Java项目中的作用及使用场景详解,怎么回答

Redis在Java项目中的作用及使用场景详解(面试要点) 一、Redis的核心作用高性能缓存层 原理:Redis基于内存操作(引用[2]),采用单线程模型避免线程切换开销,配合IO多路复用实现高吞吐(…

Python - 100天从新手到大师 - Day6

引言 这里主要是依托于 jackfrued 仓库 Python-100-Days 进行学习,记录自己的学习过程和心得体会。 1 文件读写和异常处理 实际开发中常常会遇到对数据进行持久化的场景,所谓持久化是指将数据从无法长久保存数据的存储介质(通常是内存&…

IP--MGER综合实验报告

一、实验目的完成网络设备(路由器 R1-R5、PC1-PC4)的 IP 地址规划与配置,确保接口通信基础正常。配置链路层协议及认证:R1 与 R5 采用 PPP 的 PAP 认证(R5 为主认证方),R2 与 R5 采用 PPP 的 CH…

window的WSL怎么一键重置

之前用WSL来在windows和服务器之间传输数据,所以有很多数据缓存,但是现在找不到他们的路径,所以想直接重置 首先使用spacesniffer看一下C盘的情况:看起来,这个WSL真的占用了很多空间,但是我又不知道该怎么删…

卷积神经网络研讨

卷积操作原理: 特征向量与遍历:假设已知特征向量(如蓝天白云、绿油油草地特征),在输入图像的各个区域进行遍历,通过计算内积判断该区域是否有想要的特征。 内积计算特征:内积为 0 表示两个向量垂直,关系不好,无想要的特征;夹角越小,内积越大,代表区域中有想要的特征…

【EWARM】EWARM(IAR)的安装过程以及GD32的IAR工程模板搭建

一、简介 IAR官网 EWARM,即 IAR Embedded Workbench for ARM,是由 IAR Systems 开发的一款专门用于 ARM 微处理器软件开发的集成开发环境。以下是具体介绍: 功能特性: 完整工具链支持:集成了高级编辑器、全面的编译…