From 36d1890972c72401bb444a0c4cabef1a718b6ce3 Mon Sep 17 00:00:00 2001 From: yp9522 Date: Fri, 27 Jun 2025 17:41:56 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=96=87=E6=A1=A3=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yp9522 --- .../napi/use-napi-ark-runtime.md | 4 +- .../napi/use-napi-event-loop.md | 10 ++--- .../napi/use-napi-load-module-with-info.md | 28 +++++++------- .../napi/use-napi-load-module.md | 37 +++++++++---------- .../napi/use-napi-object-wrap.md | 9 ++--- .../application-dev/napi/use-sendable-napi.md | 20 +++++----- 6 files changed, 53 insertions(+), 55 deletions(-) diff --git a/zh-cn/application-dev/napi/use-napi-ark-runtime.md b/zh-cn/application-dev/napi/use-napi-ark-runtime.md index 7b060f5e789..abdef284918 100644 --- a/zh-cn/application-dev/napi/use-napi-ark-runtime.md +++ b/zh-cn/application-dev/napi/use-napi-ark-runtime.md @@ -2,7 +2,7 @@ ## 场景介绍 -开发者通过pthread_create创建新线程后,可以通过`napi_create_ark_runtime`来创建一个新的ArkTS基础运行时环境,并通过该运行时环境加载ArkTS模块。当使用结束后,开发者需要通过`napi_destroy_ark_runtime`来销毁所创建的ArkTS基础运行时环境。 +开发者通过pthread_create创建新线程后,可以通过`napi_create_ark_runtime`来创建一个新的ArkTS运行时环境,并通过该运行时环境加载ArkTS模块。当使用结束后,开发者需要通过`napi_destroy_ark_runtime`来销毁所创建的ArkTS运行时环境。 ## 约束限制 @@ -112,7 +112,7 @@ } ret = napi_call_function(env, objUtils, logger, 0, nullptr, nullptr); - // 4. 销毁ArkTS环境 + // 4. 销毁ArkTS运行时环境 ret = napi_destroy_ark_runtime(&env); return nullptr; } diff --git a/zh-cn/application-dev/napi/use-napi-event-loop.md b/zh-cn/application-dev/napi/use-napi-event-loop.md index 9ce67726198..8001861fd98 100644 --- a/zh-cn/application-dev/napi/use-napi-event-loop.md +++ b/zh-cn/application-dev/napi/use-napi-event-loop.md @@ -1,12 +1,12 @@ # 使用扩展的Node-API接口在异步线程中运行和停止事件循环 ## 场景介绍 -开发者在自己创建的ArkTS运行环境中调用异步的ArkTS接口时,可以通过使用Node-API中的扩展接口napi_run_event_loop和napi_stop_event_loop来运行和停止ArkTS实例中的事件循环。 +在ArkTS运行环境中调用异步ArkTS接口时,可以使用Node-API的扩展接口napi_run_event_loop和napi_stop_event_loop来运行和停止事件循环。 ## 调用异步的ArkTS接口示例 -调用的ArkTS接口为异步接口时,需要通过扩展接口napi_run_event_loop将异步线程中的事件循环运行起来,底层事件队列中的异步任务将被处理执行。当前Node-API扩展了两种事件循环模式来运行异步线程的事件循环,分别为napi_event_mode_nowait模式和napi_event_mode_default模式。 -如果使用napi_event_mode_nowait模式运行底层事件循环,系统会尝试从底层的事件队列中取出一个任务并处理,完成之后事件循环停止,如果底层的事件队列中没有任务,事件循环会立刻停止,当前的异步线程不会被阻塞; -如果使用napi_event_mode_default模式来运行底层事件循环,系统会阻塞当前的线程,同时会一直尝试从事件队列中获取任务并执行处理这些任务。如果不想当前线程继续被阻塞,可以使用扩展接口napi_stop_event_loop将正在运行的事件循环停止。 +调用的ArkTS接口为异步接口时,需要通过扩展接口napi_run_event_loop将ArkTS实例中的事件循环运行起来,底层事件队列中的异步任务将被处理执行。当前Node-API扩展了两种事件循环模式来运行异步线程的事件循环,分别为napi_event_mode_nowait模式和napi_event_mode_default模式。 +使用napi_event_mode_nowait模式运行底层事件循环时,系统会尝试从事件队列中取出一个任务并处理。如果队列中有任务,处理完后事件循环会停止;如果队列中没有任务,事件循环会立即停止,当前的异步线程不会被阻塞。 +如果使用napi_event_mode_default模式来运行底层事件循环,系统会阻塞当前的线程,同时会一直尝试从事件队列中获取任务并执行处理这些任务。如果不想当前线程继续被阻塞,可以使用扩展接口napi_stop_event_loop将正在运行的ArkTS实例中的事件循环停止。 ### 示例代码 - 模块注册 @@ -68,7 +68,7 @@ if (*flag == true) { napi_run_event_loop(env, napi_event_mode_default); } else { - // 非阻塞式的处理任务,有可能队列中还没有任务就已经返回了 + // 非阻塞式处理任务,队列中可能无任务。 napi_run_event_loop(env, napi_event_mode_nowait); } return nullptr; diff --git a/zh-cn/application-dev/napi/use-napi-load-module-with-info.md b/zh-cn/application-dev/napi/use-napi-load-module-with-info.md index cadb9efceb1..24baa3a23ac 100644 --- a/zh-cn/application-dev/napi/use-napi-load-module-with-info.md +++ b/zh-cn/application-dev/napi/use-napi-load-module-with-info.md @@ -1,6 +1,6 @@ # 使用Node-API接口进行模块加载 -Node-API中的napi_load_module_with_info接口的功能是进行模块的加载,当模块加载出来之后,可以使用函数napi_get_property获取模块导出的变量,也可以使用napi_get_named_property获取模块导出的函数,该函数可以在[新创建的ArkTS基础运行时环境](use-napi-ark-runtime.md)中使用,即napi_create_ark_runtime接口创建的运行时环境。 +Node-API中的napi_load_module_with_info接口的功能是进行模块的加载,当模块加载出来之后,可以使用napi_get_property接口获取模块导出的变量,也可以使用napi_get_named_property接口获取模块导出的函数,该接口可以在[新创建的ArkTS基础运行时环境](use-napi-ark-runtime.md)中使用,即napi_create_ark_runtime接口创建的运行时环境。 ## 函数说明 @@ -57,7 +57,7 @@ function test() { export {value, test}; ``` -1. 当前模块的build-profile.json5文件中需进行以下配置: +1. 需要在当前模块的build-profile.json5文件中进行以下配置: ```json { @@ -73,7 +73,7 @@ export {value, test}; } ``` -2. 使用napi_load_module_with_info加载Test文件,调用函数test以及获取变量value。 +2. 使用napi_load_module_with_info加载Test文件,调用test函数并获取value变量。 > **注意** > @@ -110,7 +110,7 @@ export {value, test}; - **加载源码HAR模块** -HAR包Index.ets文件如下: +HAR包的Index.ets文件内容如下: ```javascript //library Index.ets @@ -121,7 +121,7 @@ function test() { export {value, test}; ``` -1. 在oh-package.json5文件中配置dependencies项: +1. 当前模块的build-profile.json5文件中需进行以下配置: ```json { @@ -131,7 +131,7 @@ export {value, test}; } ``` -2. 在使用library的模块中,对build-profile.json5进行配置: +2. 在使用库的模块中,配置build-profile.json5。 ```json { @@ -176,7 +176,7 @@ export {value, test}; - **加载源码HSP模块** -HSP包Index.ets文件如下: +当加载文件中的模块时,如以下ArkTS代码: ```javascript //hsp Index.ets @@ -187,7 +187,7 @@ function test() { export {value, test}; ``` -1. 在oh-package.json5文件中配置dependencies项: +1. 当前模块的build-profile.json5文件中需进行以下配置: ```json { @@ -197,7 +197,7 @@ export {value, test}; } ``` -2. 在使用hsp的模块中,对build-profile.json5进行配置: +2. 在使用hsp模块时,配置build-profile.json5。 ```json { @@ -242,7 +242,7 @@ export {value, test}; - **加载远程HAR模块名** -1. 在oh-package.json5文件中配置dependencies项: +1. 配置oh-package.json5文件的dependencies项: ```json { @@ -268,7 +268,7 @@ export {value, test}; } ``` -3. 使用napi_load_module_with_info加载@ohos/hypium,获取DEFAULT变量: +3. 使用napi_load_module_with_info加载@ohos/hypium,获取DEFAULT变量。 ```cpp static napi_value loadModule(napi_env env, napi_callback_info info) { @@ -291,7 +291,7 @@ export {value, test}; - **加载ohpm包名** -1. 在oh-package.json5文件中配置dependencies项: +1. 配置oh-package.json5文件的dependencies项: ```json { @@ -317,7 +317,7 @@ export {value, test}; } ``` -3. 用napi_load_module_with_info加载json5,调用函数stringify: +3. 用napi_load_module_with_info加载json5并调用stringify函数。 ```cpp static napi_value loadModule(napi_env env, napi_callback_info info) { @@ -402,7 +402,7 @@ export const add: (a: number, b: number) => number; } ``` -2. 在使用libentry.so的模块中,对build-profile.json5进行配置: +2. 在使用libentry.so的模块中,配置build-profile.json5。 ```json { diff --git a/zh-cn/application-dev/napi/use-napi-load-module.md b/zh-cn/application-dev/napi/use-napi-load-module.md index 72f19ea12ca..6d5d4edbb51 100644 --- a/zh-cn/application-dev/napi/use-napi-load-module.md +++ b/zh-cn/application-dev/napi/use-napi-load-module.md @@ -18,18 +18,18 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) ## 使用限制 -- 禁止在非主线程当中使用该接口。 -- 禁止在Init函数中使用该接口。 -- 禁止在线程安全函数的回调函数当中进行文件路径的加载。 +- 不得在非主线程中使用该接口。 +- 不得在Init函数中使用该接口。 +- 不得在线程安全函数的回调函数中进行文件路径的加载。 -建议使用[napi_load_module_with_info](use-napi-load-module-with-info.md)来进行模块加载,该接口支持了更多的场景。 +建议使用[napi_load_module_with_info](use-napi-load-module-with-info.md)来进行模块加载,该接口支持了更多场景。 ## napi_load_module支持的场景 | 场景 | 详细分类 | 说明 | | :------------- | :----------------------------- | :--------------------------- | | 系统模块 | 加载@ohos.*或 @system.* | - | -| 本地工程模块 | 加载ets目录下文件中的模块 | 要求路径以ets开头 | -| 本地工程模块 | 加载模块内文件路径 | 要求路径以moduleName开头 | +| 本地工程模块 | 加载ets目录下的文件中的模块 | 要求路径以ets开头 | +| 本地工程模块 | 加载模块内的文件路径 | 要求路径以moduleName开头 | | 本地工程模块 | 加载HAR模块名 | - | | 本地工程模块 | 加载HSP模块名 | - | | 远程包 | 加载远程HAR模块名 | - | @@ -71,7 +71,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) - **加载ets目录下文件中的模块** - 当加载文件中的模块时,如以下ArkTS代码: + 加载文件中的模块时,例如以下ArkTS代码: ```javascript //./src/main/ets/Test.ets @@ -82,7 +82,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) export {value, test}; ``` -1. 需要在工程的build-profile.json5文件中进行以下配置: +1. 需要当前模块的build-profile.json5文件中进行以下配置: ```json { @@ -137,7 +137,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) export {value, test}; ``` -1. 需要当前模块的build-profile.json5文件中进行以下配置: +1. 需要在当前模块的build-profile.json5文件中进行以下配置: ```json { @@ -154,7 +154,6 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) ``` 2. 使用napi_load_module加载Test文件,调用函数test以及获取变量value: - ```cpp static napi_value loadModule(napi_env env, napi_callback_info info) { napi_value result; @@ -193,7 +192,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) export {value, test}; ``` -1. 在当前模块下的oh-package.json5文件中配置dependencies项: +1. 在当前模块的oh-package.json5文件中配置dependencies项: ```json { @@ -203,7 +202,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) } ``` -2. 在使用library的模块中,对build-profile.json5进行配置: +2. 在使用library模块时,配置build-profile.json5。 ```json { @@ -248,7 +247,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) - **加载HSP模块名** - HSP包Index.ets文件如下: +HSP包的Index.ets文件内容如下: ```javascript //sharedlibrary Index.ets @@ -259,7 +258,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) export {value, test}; ``` -1. 在当前模块下的oh-package.json5文件中配置dependencies项: +1. 在当前模块的oh-package.json5文件中配置dependencies项: ```json { @@ -324,7 +323,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) } ``` -2. 在使用@ohos/hypium的模块中,对build-profile.json5进行配置: +2. 在使用 @ohos/hypium 模块时,配置 build-profile.json5 文件。 ```json { @@ -340,7 +339,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) } ``` -3. 用napi_load_module加载@ohos/hypium,获取DEFAULT变量: +3. 用napi_load_module加载@ohos/hypium,获取变量DEFAULT: ```cpp static napi_value loadModule(napi_env env, napi_callback_info info) { @@ -373,7 +372,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) } ``` -2. 在使用@ohos/axios的模块中,对build-profile.json5进行配置: +2. 在使用@ohos/axios模块时,配置build-profile.json5文件。 ```json { @@ -416,7 +415,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) ```javascript //index.d.ts - export const add: (a: number, b: number) => number; + export const add: (a: number, b: number) => number; ``` 1. 在当前模块下的oh-package.json5文件中配置dependencies项: @@ -467,7 +466,7 @@ napi_status napi_load_module(napi_env env, const char* path, napi_value* result) napi_value args[2] = {a, b}; // 3. 使用napi_call_function调用函数add napi_value returnValue; - napi_call_function(env, result, addFn, 2, args, &returnValue); + napi_call_function(env, result, addFn, 2, args, &returnValue); return result; } ``` diff --git a/zh-cn/application-dev/napi/use-napi-object-wrap.md b/zh-cn/application-dev/napi/use-napi-object-wrap.md index ac70ac58365..042c1cf4f8a 100644 --- a/zh-cn/application-dev/napi/use-napi-object-wrap.md +++ b/zh-cn/application-dev/napi/use-napi-object-wrap.md @@ -2,11 +2,11 @@ ## 场景介绍 -通过`napi_wrap`将ArkTS对象与Native的C++对象绑定,后续操作时再通过`napi_unwrap`将ArkTS对象绑定的C++对象取出,并对其进行操作。 +通过`napi_wrap`将ArkTS对象与C++对象绑定,后续操作时使用`napi_unwrap`取出并操作该C++对象。 ## 使用示例 -1. 接口声明、编译配置以及模块注册 +1. 接口声明、编译配置和模块注册的具体步骤如下: **接口声明** @@ -168,9 +168,8 @@ delete obj; return jsThis; } - // 从napi_wrap接口的result获取napi_ref的行为,将会为jsThis创建强引用, - // 若开发者不需要主动管理jsThis的生命周期,可直接在napi_wrap最后一个参数中传入nullptr, - // 或者使用napi_reference_unref方法将napi_ref转为弱引用。 + // 从napi_wrap接口的result获取napi_ref的行为,将会为jsThis创建强引用 + // 若不需要管理jsThis的生命周期,可在napi_wrap最后一个参数中传入nullptr,或使用napi_reference_unref将napi_ref转为弱引用 uint32_t refCount = 0; napi_reference_unref(env, obj->wrapper_, &refCount); diff --git a/zh-cn/application-dev/napi/use-sendable-napi.md b/zh-cn/application-dev/napi/use-sendable-napi.md index 671d0c9136b..f7f637f745d 100644 --- a/zh-cn/application-dev/napi/use-sendable-napi.md +++ b/zh-cn/application-dev/napi/use-sendable-napi.md @@ -52,7 +52,7 @@ #include "napi/native_api.h" #include "hilog/log.h" - // 一个native类,它的实例在下面会包装在Sendable ArkTS对象中 + // 一个Native类,其实例将被包装在Sendable ArkTS对象中 class MyObject { public: static napi_value Init(napi_env env, napi_value exports); @@ -109,7 +109,7 @@ } EXTERN_C_END - // 准备模块加载相关信息,将上述Init函数与本模块名等信息记录下来。 + // 准备模块加载所需信息,记录上述Init函数和模块名 static napi_module nativeModule = { .nm_version = 1, .nm_flags = 0, @@ -120,20 +120,20 @@ .reserved = {0}, }; - // 加载so时,该函数会自动被调用,将上述nativeModule模块注册到系统中。 + // 加载so时,该函数会自动被调用,将上述nativeModule模块注册到系统中 extern "C" __attribute__((constructor)) void RegisterObjectWrapModule() { napi_module_register(&nativeModule); } ``` 2. 在构造函数中绑定Sendable ArkTS与C++对象 ```cpp - napi_value MyObject::New(napi_env env, napi_callback_info info) { + napi_value MyObject::New(napi_env env, napi_callback_info info) { // 构造函数,用于创建新的MyObject实例 OH_LOG_INFO(LOG_APP, "MyObject::New called"); napi_value newTarget; napi_get_new_target(env, info, &newTarget); if (newTarget != nullptr) { - // 使用`new MyObject(...)`调用方式 + // 使用`new MyObject(...)`方式进行调用。 size_t argc = 1; napi_value args[1]; napi_value jsThis; @@ -154,7 +154,7 @@ return jsThis; } else { - // 使用`MyObject(...)`调用方式 + // 使用`MyObject(...)`方式进行调用。 size_t argc = 1; napi_value args[1]; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); @@ -172,7 +172,7 @@ 3. 将Sendable ArkTS对象之前绑定的C++对象取出,并对其进行操作 ```cpp - napi_value MyObject::GetValue(napi_env env, napi_callback_info info) { + napi_value MyObject::GetValue(napi_env env, napi_callback_info info) { // 获取MyObject的value属性 OH_LOG_INFO(LOG_APP, "MyObject::GetValue called"); napi_value jsThis; @@ -187,7 +187,7 @@ return num; } - napi_value MyObject::SetValue(napi_env env, napi_callback_info info) { + napi_value MyObject::SetValue(napi_env env, napi_callback_info info) { // 设置MyObject的value属性 OH_LOG_INFO(LOG_APP, "MyObject::SetValue called"); size_t argc = 1; @@ -204,14 +204,14 @@ return nullptr; } - napi_value MyObject::PlusOne(napi_env env, napi_callback_info info) { + napi_value MyObject::PlusOne(napi_env env, napi_callback_info info) { // 将MyObject的value属性加1 OH_LOG_INFO(LOG_APP, "MyObject::PlusOne called"); napi_value jsThis; napi_get_cb_info(env, info, nullptr, nullptr, &jsThis, nullptr); MyObject *obj; - // 通过napi_unwrap_sendable将jsThis之前绑定的C++对象取出,并对其进行操作 + // 通过napi_unwrap_sendable将Sendable ArkTS对象之前绑定的C++对象取出,并对其进行操作 napi_unwrap_sendable(env, jsThis, reinterpret_cast(&obj)); obj->value_ += 1; napi_value num; -- Gitee