【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
英文地址,請注明出處:http://en.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 微處理器軟件開發的集成開發環境。以下是具體介紹: 功能特性: 完整工具鏈支持:集成了高級編輯器、全面的編譯…