往期鸿蒙全套实战文章必看:
简介
使用Node-API接口进行array相关开发时,调用相关接口可以在Node-API模块中直接操作和处理ArkTS中的数组。
基本概念
使用Node-API接口进行数组(array)相关开发时,涉及的基本概念主要包括数组的创建、访问、修改、遍历以及与数组相关的操作。这些概念对于理解如何在Node-API模块中与ArkTS数组交互非常重要。以下是一些关键概念:
- 数组的创建:在Node-API模块中需要创建一个新的ArkTS数组,可以使用napi_create_array接口创建数组,将数组传递给ArkTS层。
- 数组相关操作:在Node-API模块中通过对应的接口获取ArkTS数组的长度、检索指定索引处的元素以及设置指定索引处的元素值,从而实现Node-API模块与ArkTS数组的交互。
- TypedArray:ArkTS中的TypedArray是一种用来描述二进制数据的类数组数据视图,可以简单理解为一种指定元素类型的数组,TypedArray没有直接构造器,但是可以用它的子类构造器构造TypedArray类型的数据。TypedArray的子类有:Int8Array、Uint8Array、Uint8ClampedArray、Int16Array、Int32Array等。
- DataView:DataView是ArkTS中的一种视图,是可以从ArrayBuffer对象中读写多种数值类型的底层接口。
- ArrayBuffer:ArrayBuffer是固定长度的二进制数据缓冲区。
场景和功能介绍
使用Node-API接口进行数组相关开发时,可以处理各种涉及ArkTS数组的操作和交互场景。以下是几个具体的使用场景介绍:
接口 | 描述 |
---|---|
napi_create_array | 用于在Node-API模块中向ArkTS层创建一个ArkTS数组对象。 |
napi_create_array_with_length | 用于在Node-API模块中向ArkTS层创建指定长度的ArkTS数组时。 |
napi_get_array_length | 用于在Node-API模块中获取ArkTS数组对象的长度。 |
napi_is_array | 用于在Node-API模块中判断一个napi_value值是否为数组。 |
napi_set_element | 用于在Node-API模块中对ArkTS数组对象的特定索引处设置一个值。 |
napi_get_element | 用于在Node-API模块中从ArkTS数组对象的特定索引处获取一个值。 |
napi_has_element | 用于在Node-API模块中判断ArkTS数组对象请求索引处是否包含元素。 |
napi_delete_element | 用于在Node-API模块中从ArkTS数组对象中删除请求索引对应的元素。 |
napi_create_typedarray | 用于在Node-API模块中创建指定类型的TypedArray,例如Uint8Array、Int32Array等,通常用于将Node-API模块中的数据转换为ArkTS中的TypedArray,以便进行高性能的数据处理操作。 |
napi_is_typedarray | 用于在Node-API模块中判断一个给定的napi_value是否为TypedArray对象。 |
napi_get_typedarray_info | 用于在Node-API模块中获得某个TypedArray的各种属性。 |
napi_create_dataview | 用于在Node-API模块中创建一个DataView对象,可以访问和操作二进制数据。 |
napi_is_dataview | 用于在Node-API模块中判断给定的napi_value是否为ArkTS中的DataView对象。 |
napi_get_dataview_info | 用于在Node-API模块中获得某个DataView的各种属性。 |
使用示例
本文仅对接口对应C++及ArkTS相关代码进行展示。具体使用见示例。
napi_create_array
用于在Node-API模块中创建一个ArkTS数组。
cpp部分代码
#include "napi/native_api.h"
static napi_value CreateArray(napi_env env, napi_callback_info info)
{
// 创建一个空数组
napi_value jsArray = nullptr;
napi_create_array(env, &jsArray);
// 将创建好的数组进行赋值
for (int i = 0; i < 5; i++) {
napi_value element;
napi_create_int32(env, i, &element);
napi_set_element(env, jsArray, i, element);
}
// 返回已创建好的数组
return jsArray;
}
接口声明
// index.d.ts
export const createArray: () => number[];
ArkTS侧示例代码
import hilog from '@ohos.hilog'
import testNapi from 'libentry.so'
hilog.info(0x0000, 'testTag', 'Test Node-API napi_create_array:%{public}s', JSON.stringify(testNapi.createArray()));
napi_create_array_with_length
用于在Node-API模块中创建一个具有指定长度的ArkTS数组。
cpp部分代码
#include "napi/native_api.h"
static napi_value CreateArrayWithLength