Node-API的數(shù)據(jù)類型
napi_status
是一個(gè)枚舉數(shù)據(jù)類型冬骚,表示Node-API接口返回的狀態(tài)信息矾踱。
每當(dāng)調(diào)用一個(gè)Node-API函數(shù)蓬推,都會(huì)返回該值婴渡,表示操作成功與否的相關(guān)信息济炎。
typedef enum {
napi_ok,
napi_invalid_arg,
napi_object_expected,
napi_string_expected,
napi_name_expected,
napi_function_expected,
napi_number_expected,
napi_boolean_expected,
napi_array_expected,
napi_generic_failure,
napi_pending_exception,
napi_cancelled,
napi_escape_called_twice,
napi_handle_scope_mismatch,
napi_callback_scope_mismatch,
napi_queue_full,
napi_closing,
napi_bigint_expected,
napi_date_expected,
napi_arraybuffer_expected,
napi_detachable_arraybuffer_expected,
napi_would_deadlock, /* unused */
napi_no_external_buffers_allowed,
napi_cannot_run_js
} napi_status;
napi_extended_error_info
一個(gè)結(jié)構(gòu)體川抡,在調(diào)用函數(shù)不成功時(shí)存儲(chǔ)了較為詳細(xì)的錯(cuò)誤信息。
typedef struct {
const char *error_message;
void *engine_reserved;
uint32_t engine_error_code;
napi_status error_code;
} napi_extended_error_info;
napi_value
在C++代碼中,表示一個(gè)JavaScript值崖堤。
napi_env
用于表示Node-API執(zhí)行時(shí)的上下文侍咱,Native側(cè)函數(shù)入?yún)ⅲ鬟f給函數(shù)中的Node-API接口密幔。
退出Native側(cè)插件時(shí)楔脯,napi_env將失效,該事件通過回調(diào)傳遞給napi_add_env_cleanup_hook和napi_set_instance_data胯甩。
禁止緩存napi_env昧廷,禁止在不同Worker中傳遞napi_env。
napi_threadsafe_function
napi_threadsafe_function用來創(chuàng)建一個(gè)線程安全的JavaScript函數(shù)偎箫,可以在不同的線程中調(diào)用木柬。可以用于將異步操作的結(jié)果傳遞給JavaScript環(huán)境淹办,例如從另一個(gè)線程中讀取數(shù)據(jù)或執(zhí)行計(jì)算密集型操作眉枕。此外,它還可以用于從JavaScript環(huán)境中調(diào)用C++代碼中的函數(shù)娇唯,以便在另一個(gè)線程中執(zhí)行。通過使用napi_threadsafe_function寂玲,可以實(shí)現(xiàn)JavaScript和C++之間的高效通信塔插,同時(shí)保持線程安全性。
napi_threadsafe_function_release_mode
該枚舉類型定義了兩個(gè)常量拓哟,用于指定在何時(shí)釋放線程安全函數(shù)的回調(diào)函數(shù)想许。
typedef enum {
napi_tsfn_release,
napi_tsfn_abort
} napi_threadsafe_function_release_mode;
該值會(huì)傳給napi_release_threadsafe_function。
napi_release_threadsafe_function(napi_threadsafe_function func,
napi_threadsafe_function_release_mode mode);
mode值為napi_tsfn_release時(shí):表示當(dāng)前線程不再調(diào)用此tsfn断序。
mode值為napi_tsfn_abort時(shí):表示除了當(dāng)前線程流纹,其他線程不能再調(diào)用此tsfn。 如果設(shè)置為napi_tsfn_abort违诗,利用napi_call_threadsafe_function接口調(diào)用此tsfn時(shí)將返回napi_closing漱凝,tsfn函數(shù)并不會(huì)被放入queue中。
napi_threadsafe_function_call_mode
該枚舉類型定義了兩個(gè)常量诸迟,用于指定線程安全函數(shù)的調(diào)用模式茸炒。
數(shù)據(jù)結(jié)構(gòu)如下所示:
typedef enum {
napi_tsfn_nonblocking,
napi_tsfn_blocking
} napi_threadsafe_function_call_mode;
napi_tsfn_nonblocking:napi_call_threadsafe_function是非阻塞的,如果隊(duì)列已滿阵苇,則返回napi_queue_full壁公,從而阻止數(shù)據(jù)添加到隊(duì)列中。
napi_tsfn_blocking:napi_call_threadsafe_function是阻塞的绅项,直至隊(duì)列中有空間可用紊册。
內(nèi)存管理類型
Node-API包含以下內(nèi)存管理類型:
napi_handle_scope
napi_handle_scope數(shù)據(jù)類型是用來管理JavaScript對象的生命周期的。它允許JavaScript對象在一定范圍內(nèi)保持活動(dòng)狀態(tài)快耿,以便在JavaScript代碼中使用囊陡。在創(chuàng)建napi_handle_scope時(shí)芳绩,所有在該范圍內(nèi)創(chuàng)建的JavaScript對象都會(huì)保持活動(dòng)狀態(tài),直到結(jié)束关斜。這樣可以避免在JavaScript代碼中使用已經(jīng)被釋放的對象示括,從而提高代碼的可靠性和性能。
napi_escapable_handle_scope
由napi_open_escapable_handle_scope接口創(chuàng)建痢畜,由napi_close_escapable_handle_scope接口關(guān)閉垛膝。
表示一種特殊類型的句柄范圍,用于將在escapable_handle_scope范圍內(nèi)創(chuàng)建的值返回給父scope丁稀。
用于napi_escape_handle接口吼拥,將escape_handle_scope提升到JS對象,以便在外部作用域使用线衫。
napi_ref
指向napi_value凿可,允許用戶管理JavaScript值的生命周期。
napi_type_tag
該結(jié)構(gòu)體定義了一個(gè)包含兩個(gè)無符號(hào)64位整數(shù)的類型標(biāo)簽授账,用于標(biāo)識(shí)一個(gè)Node-API值的類型信息枯跑。
typedef struct {
uint64_t lower;
uint64_t upper;
} napi_type_tag;
存儲(chǔ)了兩個(gè)無符號(hào)64位整數(shù)的128位值,用它來標(biāo)記JavaScript對象白热,確保它們屬于某種類型敛助。
比napi_instanceof更強(qiáng)的類型檢查,如果對象的原型被操縱屋确,napi_instanceof可能會(huì)報(bào)告誤報(bào)纳击。
type_tag與napi_wrap結(jié)合非常有用,因?yàn)樗_保從包裝對象檢索的指針可以安全地轉(zhuǎn)換為與先前應(yīng)用于JavaScript對象的類型標(biāo)記相對應(yīng)的Native類型攻臀。
napi_async_cleanup_hook_handle
napi_async_cleanup_hook_handle用于注冊異步操作的回調(diào)函數(shù)焕数。它主要用于在異步操作完成或被取消時(shí)執(zhí)行清理操作,例如釋放資源或撤銷操作刨啸。使用napi_async_cleanup_hook_handle可以確保在異步操作完成或被取消時(shí)堡赔,相關(guān)資源得到正確的釋放和清理,從而避免內(nèi)存泄漏等問題设联。
回調(diào)類型
Node-API包含以下回調(diào)類型:
napi_callback_info
Native側(cè)獲取JS側(cè)參數(shù)信息加匈,傳遞給napi_get_cb_info,用于獲取JS側(cè)入?yún)⑿畔ⅰ?/p>
napi_callback
表示用戶定義的Native函數(shù)仑荐,暴露給JavaScript雕拼,即JS側(cè)調(diào)用的接口;一般不在此callback中創(chuàng)建handle或者callback scope粘招。
基本用法如下:
typedef napi_value (*napi_callback)(napi_env, napi_callback_info);
napi_finalize
函數(shù)指針啥寇,用于傳入napi_create_threadsafe_function和napi_set_instance_data接口。napi_finalize在對象被回收時(shí)會(huì)被調(diào)用。
napi_async_execute_callback
函數(shù)指針辑甜,用于napi_create_async_work接口衰絮。
異步執(zhí)行的Native函數(shù),從工作池線程調(diào)用磷醋,可與主事件循環(huán)線程并行執(zhí)行猫牡。
函數(shù)實(shí)現(xiàn)中必須避免執(zhí)行JavaScript或與JavaScript對象交互的Node-API調(diào)用。
Node-API調(diào)用可以在napi_async_complete_callback中執(zhí)行邓线。
napi_async_complete_callback
napi_async_complete_callback用于異步操作完成后的回調(diào)淌友。當(dāng)需要進(jìn)行異步操作時(shí),可以使用napi_create_async_work函數(shù)創(chuàng)建一個(gè)異步操作任務(wù)骇陈,并指定一個(gè)napi_async_complete_callback回調(diào)函數(shù)震庭,在異步操作完成后會(huì)自動(dòng)調(diào)用該回調(diào)函數(shù),以便進(jìn)行后續(xù)的處理你雌。該回調(diào)函數(shù)的參數(shù)包括當(dāng)前異步操作任務(wù)的狀態(tài)和返回值等信息器联,可以根據(jù)這些信息進(jìn)行相應(yīng)的處理。
napi_threadsafe_function_call_js
函數(shù)指針婿崭,在主線程中與獨(dú)立線程中的JavaScript代碼進(jìn)行交互拨拓,從而實(shí)現(xiàn)更加復(fù)雜的功能,用于napi_create_threadsafe_function(napi_env env,…,napi_threadsafe_function_call_js call_js_cb,...)接口氓栈。
napi_cleanup_hook
函數(shù)指針渣磷,用于napi_add_env_cleanup_hook接口,當(dāng)環(huán)境銷毀時(shí)會(huì)被執(zhí)行颤绕。
napi_async_cleanup_hook
函數(shù)指針幸海,用于napi_add_async_cleanup_hook接口祟身,當(dāng)環(huán)境銷毀時(shí)會(huì)被執(zhí)行奥务。
調(diào)度優(yōu)先級
QoS決定了線程調(diào)度的優(yōu)先級,等級定義如下:
typedef enum {
napi_qos_background = 0,
napi_qos_utility = 1,
napi_qos_default = 2,
napi_qos_user_initiated = 3,
} napi_qos_t;
QoS等級 | 適用場景 |
---|---|
napi_qos_background | 低等級袜硫,用戶不可見任務(wù)氯葬,例如數(shù)據(jù)同步、備份婉陷。 |
napi_qos_utility | 中低等級帚称,不需要立即看到響應(yīng)效果的任務(wù),例如下載或?qū)霐?shù)據(jù)秽澳。 |
napi_qos_default | 默認(rèn) |
napi_qos_user_initiated | 高等級闯睹,用戶觸發(fā)并且可見進(jìn)展,例如打開文檔担神。 |
事件循環(huán)模式
napi提供了運(yùn)行底層事件循環(huán)的兩種模式, 其定義如下:
typedef enum {
napi_event_mode_default = 0,
napi_event_mode_nowait = 1,
} napi_event_mode;
事件循環(huán)運(yùn)行模式 | 解釋說明 |
---|---|
napi_event_mode_default | 阻塞式的運(yùn)行底層事件循環(huán)楼吃,直到循環(huán)中沒有任何任務(wù)時(shí)退出事件循環(huán)。 |
napi_event_mode_nowait | 非阻塞式的運(yùn)行底層事件循環(huán),嘗試去處理一個(gè)任務(wù)孩锡,處理完之后退出事件循環(huán)酷宵;如果事件循環(huán)中沒有任務(wù),立刻退出事件循環(huán)躬窜。 |
支持的Node-API接口
Node-API接口在Node.js提供的原生模塊基礎(chǔ)上擴(kuò)展浇垦,目前支持部分接口,具體可見下文荣挨。
異步安全線程相關(guān)
接口 | 功能說明 |
---|---|
napi_create_threadsafe_function | 創(chuàng)建線程安全函數(shù)男韧。 |
napi_get_threadsafe_function_context | 獲取線程安全函數(shù)中的context。 |
napi_call_threadsafe_function | 調(diào)用線程安全函數(shù)垦沉。 |
napi_acquire_threadsafe_function | 指示線程安全函數(shù)可以開始使用煌抒。 |
napi_release_threadsafe_function | 指示線程安全函數(shù)將停止使用。 |
napi_ref_threadsafe_function | 指示在主線程上運(yùn)行的事件循環(huán)在線程安全函數(shù)被銷毀之前不應(yīng)退出厕倍。 |
napi_unref_threadsafe_function | 指示在主線程上運(yùn)行的事件循環(huán)可能會(huì)在線程安全函數(shù)被銷毀之前退出寡壮。 |
buffer相關(guān)
接口 | 功能說明 |
---|---|
napi_create_buffer | 創(chuàng)建并獲取一個(gè)指定大小的JS Buffer。 |
napi_create_buffer_copy | 創(chuàng)建并獲取一個(gè)指定大小的JS Buffer讹弯,并以給定數(shù)據(jù)進(jìn)行初始化况既。 |
napi_create_external_buffer | 創(chuàng)建并獲取一個(gè)指定大小的JS Buffer,并以給定數(shù)據(jù)進(jìn)行初始化组民,該接口可為Buffer附帶額外數(shù)據(jù)棒仍。 |
napi_get_buffer_info | 獲取JS Buffer底層data及其長度。 |
napi_is_buffer | 判斷給定JS value是否為Buffer對象臭胜。 |
napi_create_external_arraybuffer | 分配一個(gè)附加有外部數(shù)據(jù)的JS ArrayBuffer莫其。 |
string相關(guān)
接口 | 功能說明 |
---|---|
napi_create_string_utf16 | 通過UTF16編碼的C字符串?dāng)?shù)據(jù)創(chuàng)建JS String。 |
napi_get_value_string_utf16 | 獲取給定JS vaule對應(yīng)的UTF16編碼的字符串耸三。 |
napi_create_string_latin1 | 通過ISO-8859-1編碼的C字符串?dāng)?shù)據(jù)創(chuàng)建JS String乱陡。 |
napi_create_string_utf8 | 通過UTF8編碼的C字符串?dāng)?shù)據(jù)創(chuàng)建JS String。 |
napi_get_value_string_latin1 | 獲取給定JS vaule對應(yīng)的ISO-8859-1編碼的字符串仪壮。 |
napi_get_value_string_utf8 | 獲取給定JS vaule對應(yīng)的UTF8編碼的字符串憨颠。 |
date相關(guān)
接口 | 功能說明 |
---|---|
napi_create_date | 通過一個(gè)C的double數(shù)據(jù)創(chuàng)建JS Date。 |
napi_get_date_value | 獲取給定JS Date對應(yīng)的C double值积锅。 |
napi_is_date | 判斷給定JS value是否為JS Date對象爽彤。 |
arraybuffer相關(guān)
接口 | 功能說明 |
---|---|
napi_get_arraybuffer_info | 獲取ArrayBuffer的底層data buffer及其長度。 |
napi_is_arraybuffer | 判斷給定JS value是否為ArrayBuffer缚陷。 |
napi_detach_arraybuffer | 分離給定ArrayBuffer的底層數(shù)據(jù)适篙。 |
napi_is_detached_arraybuffer | 判斷給定的ArrayBuffer是否已被分離。 |
napi_create_arraybuffer | 創(chuàng)建并獲取一個(gè)指定大小的JS ArrayBuffer箫爷。 |
module相關(guān)
接口 | 功能說明 |
---|---|
napi_module_register | native模塊注冊接口嚷节。 |
生命周期相關(guān)
接口 | 功能說明 |
---|---|
napi_open_handle_scope | 創(chuàng)建一個(gè)上下文環(huán)境使用铆铆。需要使用napi_close_handle_scope進(jìn)行關(guān)閉。 |
napi_close_handle_scope | 關(guān)閉傳入的上下文環(huán)境丹喻,關(guān)閉后薄货,全部在其中聲明的引用都將被關(guān)閉。 |
napi_open_escapable_handle_scope | 創(chuàng)建出一個(gè)可逃逸的handel scope碍论,可將范圍內(nèi)聲明的值返回到父作用域谅猾。需要使用napi_close_escapable_handle_scope進(jìn)行關(guān)閉。 |
napi_close_escapable_handle_scope | 關(guān)閉傳入的可逃逸的handel scope鳍悠。 |
napi_escape_handle | 提升傳入的JS Object的生命周期到其父作用域税娜。 |
napi_create_reference | 為Object創(chuàng)建一個(gè)reference,以延長其生命周期藏研。調(diào)用者需要自己管理reference生命周期敬矩。 |
napi_delete_reference | 刪除傳入的reference。 |
napi_reference_ref | 增加傳入的reference的引用計(jì)數(shù)蠢挡,并獲取新的計(jì)數(shù)弧岳。 |
napi_reference_unref | 減少傳入的reference的引用計(jì)數(shù),并獲取新的計(jì)數(shù)业踏。 |
napi_get_reference_value | 獲取與reference相關(guān)聯(lián)的JS Object禽炬。 |
napi_add_finalizer | 當(dāng)js Object中的對象被垃圾回收時(shí)調(diào)用注冊的napi_finalize回調(diào)。 |
promise相關(guān)
接口 | 功能說明 |
---|---|
napi_create_promise | 創(chuàng)建一個(gè)promise對象勤家。 |
napi_resolve_deferred | 對promise關(guān)聯(lián)的deferred對象進(jìn)行resolve腹尖。 |
napi_reject_deferred | 對promise關(guān)聯(lián)的deferred對象進(jìn)行reject。 |
napi_is_promise | 判斷給定napi_value是否為promise對象伐脖。 |
array相關(guān)
接口 | 功能說明 |
---|---|
napi_create_array | 創(chuàng)建并獲取一個(gè)JS Array热幔。 |
napi_create_array_with_length | 創(chuàng)建并獲取一個(gè)指定長度的JS Array。 |
napi_create_typedarray | 通過現(xiàn)有的ArrayBuffer創(chuàng)建一個(gè)JS TypeArray讼庇。 |
napi_create_dataview | 通過現(xiàn)有的ArrayBuffer創(chuàng)建一個(gè)JS DataView绎巨。 |
napi_get_array_length | 獲取array的length。 |
napi_get_typedarray_info | 獲取給定TypedArray的各種屬性巫俺。 |
napi_get_dataview_info | 獲取給定DataView的各種屬性认烁。 |
napi_is_array | 判斷給定JS value是否為array肿男。 |
napi_set_element | 在給定Object的指定索引處介汹,設(shè)置元素。 |
napi_get_element | 獲取給定Object指定索引處的元素舶沛。 |
napi_has_element | 若給定Object的指定索引處擁有屬性嘹承,獲取該元素。 |
napi_delete_element | 嘗試刪除給定Object的指定索引處的元素如庭。 |
primitive相關(guān)
接口 | 功能說明 |
---|---|
napi_get_boolean | 根據(jù)給定的C boolean值叹卷,獲取JS Boolean對象撼港。 |
napi_get_global | 獲取global對象。 |
napi_get_null | 獲取null對象骤竹。 |
napi_get_undefined | 獲取undefined對象帝牡。 |
napi_coerce_to_bool | 將給定的JS value強(qiáng)轉(zhuǎn)成JS Boolean。 |
napi_coerce_to_number | 將給定的JS value強(qiáng)轉(zhuǎn)成JS Number蒙揣。 |
napi_coerce_to_object | 將給定的JS value強(qiáng)轉(zhuǎn)成JS Object靶溜。 |
napi_coerce_to_string | 將給定的JS value強(qiáng)轉(zhuǎn)成JS String。 |
class相關(guān)
接口 | 功能說明 |
---|---|
napi_get_new_target | 獲取構(gòu)造函數(shù)調(diào)用的new.target懒震。 |
napi_define_class | 定義與C++類相對應(yīng)的JavaScript類罩息。 |
napi_new_instance | 通過給定的構(gòu)造函數(shù),構(gòu)建一個(gè)實(shí)例个扰。 |
object相關(guān)
接口 | 功能說明 |
---|---|
napi_get_prototype | 獲取給定JS Object的prototype瓷炮。 |
napi_create_object | 創(chuàng)建一個(gè)默認(rèn)的JS Object。 |
napi_object_freeze | 凍結(jié)給定的對象递宅。 |
napi_object_seal | 密封給定的對象娘香。 |
napi_typeof | 獲取給定JS value的JS Type。 |
napi_instanceof | 判斷給定object是否為給定constructor的實(shí)例办龄。 |
napi_type_tag_object | 將tag指針的值與Object關(guān)聯(lián)茅主。 |
napi_check_object_type_tag | 判斷給定的tag指針是否被關(guān)聯(lián)到了JS Object上。 |
bigint相關(guān)
接口 | 功能說明 |
---|---|
napi_create_bigint_int64 | 通過一個(gè)C的int64數(shù)據(jù)創(chuàng)建JS BigInt土榴。 |
napi_create_bigint_uint64 | 通過一個(gè)C的uint64數(shù)據(jù)創(chuàng)建JS BigInt诀姚。 |
napi_create_bigint_words | 通過一個(gè)C的uint64數(shù)組創(chuàng)建單個(gè)JS BigInt。 |
napi_get_value_bigint_int64 | 獲取給定JS BigInt對應(yīng)的C int64值玷禽。 |
napi_get_value_bigint_uint64 | 獲取給定JS BigInt對應(yīng)的C uint64值赫段。 |
napi_get_value_bigint_words | 獲取給定JS BigInt對應(yīng)的信息,包括符號(hào)位矢赁、64位小端序數(shù)組和數(shù)組中的元素個(gè)數(shù)糯笙。 |
異常和錯(cuò)誤相關(guān)
接口 | 功能說明 |
---|---|
napi_throw | 拋出一個(gè)JS value。 |
napi_throw_type_error | 拋出一個(gè)帶文本信息的JS TypeError撩银。 |
napi_throw_range_error | 拋出一個(gè)帶文本信息的JS RangeError给涕。 |
napi_is_error | 判斷napi_value是否表示為一個(gè)error對象。 |
napi_create_error | 創(chuàng)建并獲取一個(gè)帶文本信息的JS Error额获。 |
napi_create_type_error | 創(chuàng)建并獲取一個(gè)帶文本信息的JS TypeError够庙。 |
napi_create_range_error | 創(chuàng)建并獲取一個(gè)帶文本信息的JS RangeError。 |
napi_get_and_clear_last_exception | 獲取并清除最近一次出現(xiàn)的異常抄邀。 |
napi_is_exception_pending | 判斷是否出現(xiàn)了異常耘眨。 |
napi_fatal_error | 引發(fā)致命錯(cuò)誤以立即終止進(jìn)程。 |
napi_get_last_error_info | 獲取napi_extended_error_info結(jié)構(gòu)體境肾,其中包含最近一次出現(xiàn)的error信息剔难。 |
屬性相關(guān)
接口 | 功能說明 |
---|---|
napi_get_property_names | 以字符串?dāng)?shù)組的形式獲取對象的可枚舉屬性的名稱胆屿。 |
napi_set_property | 對給定Object設(shè)置屬性徐伐。 |
napi_get_property | 獲取給定Object的給定屬性潘拨。 |
napi_has_property | 判斷給定對象中是否存在給定屬性。 |
napi_delete_property | 嘗試從給定Object中刪除給定key屬性喝检。 |
napi_has_own_property | 判斷給定Object中是否有名為key的own property纯趋。 |
napi_set_named_property | 對給定Object設(shè)置一個(gè)給定名稱的屬性彻秆。 |
napi_get_named_property | 獲取給定Object中指定名稱的屬性。 |
napi_has_named_property | 判斷給定Object中是否有給定名稱的屬性结闸。 |
napi_define_properties | 批量的向給定Object中定義屬性唇兑。 |
napi_get_all_property_names | 獲取一個(gè)數(shù)組,其中包含此對象過濾后的屬性名稱桦锄。 |
異步任務(wù)相關(guān)
接口 | 功能說明 |
---|---|
napi_create_async_work | 創(chuàng)建一個(gè)異步工作對象扎附。 |
napi_delete_async_work | 釋放先前創(chuàng)建的異步工作對象。 |
napi_queue_async_work | 將異步工作對象加到隊(duì)列结耀,由底層去調(diào)度執(zhí)行留夜。 |
napi_cancel_async_work | 取消入隊(duì)的異步任務(wù)。 |
自定義異步操作
接口 | 功能說明 |
---|---|
napi_async_init | 創(chuàng)建一個(gè)異步資源上下文環(huán)境(暫不支持與async_hook相關(guān)能力)图甜。 |
napi_make_callback | 在異步資源上下文環(huán)境中回調(diào)JS函數(shù)(暫不支持與async_hook相關(guān)能力)碍粥。 |
napi_async_destroy | 銷毀先前創(chuàng)建的異步資源上下文環(huán)境(暫不支持與async_hook相關(guān)能力)。 |
napi_open_callback_scope | 創(chuàng)建一個(gè)回調(diào)作用域(暫不支持與async_hook相關(guān)能力)黑毅。 |
napi_close_callback_scope | 關(guān)閉先前創(chuàng)建的回調(diào)作用域(暫不支持與async_hook相關(guān)能力)嚼摩。 |
判斷給定的兩個(gè)JS value是否嚴(yán)格相等
接口 | 功能說明 |
---|---|
napi_strict_equals | 判斷給定的兩個(gè)JS value是否嚴(yán)格相等。 |
uv相關(guān)
接口 | 功能說明 |
---|---|
napi_get_uv_event_loop | 獲取當(dāng)前l(fā)ibuv loop實(shí)例矿瘦。 |
函數(shù)調(diào)用
接口 | 功能說明 |
---|---|
napi_call_function | 在C/C++側(cè)調(diào)用JS方法枕面。 |
napi_get_cb_info | 從給定的callback info中獲取有關(guān)調(diào)用的詳細(xì)信息,如參數(shù)和this指針缚去。 |
擴(kuò)展能力
接口 | 功能說明 |
---|---|
napi_queue_async_work_with_qos | 將異步工作對象加到隊(duì)列潮秘,由底層根據(jù)傳入的qos優(yōu)先級去調(diào)度執(zhí)行。 |
napi_run_script_path | 運(yùn)行指定abc文件易结。 |
napi_load_module | 將abc文件作為模塊加載枕荞,返回模塊的命名空間。 |
napi_create_object_with_properties | 使用給定的napi_property_descriptor創(chuàng)建js Object搞动。descriptor的鍵名必須為 string躏精,且不可轉(zhuǎn)為number。 |
napi_create_object_with_named_properties | 使用給定的napi_value和鍵名創(chuàng)建js Object滋尉。鍵名必須為 string玉控,且不可轉(zhuǎn)為number飞主。 |
napi_coerce_to_native_binding_object | 強(qiáng)制將js Object和Native對象綁定狮惜。 |
napi_run_event_loop | 觸發(fā)底層的事件循環(huán)高诺。 |
napi_stop_event_loop | 停止底層的事件循環(huán)。 |
napi_queue_async_work_with_qos
napi_status napi_run_script_path(napi_env env,
const char* abcPath,
napi_value* result);
用法同napi_queue_async_work碾篡,但可以指定QoS等級虱而。
napi_run_script_path
napi_status napi_run_script_path(napi_env env,
const char* abcPath,
napi_value* result);
napi_load_module
napi_status napi_load_module(napi_env env,
const char* path,
napi_value* result);
napi_create_object_with_properties
napi_status napi_create_object_with_properties(napi_env env,
napi_value* result,
size_t property_count,
const napi_property_descriptor* properties);
napi_create_object_with_named_properties
napi_status napi_create_object_with_named_properties(napi_env env,
napi_value* result,
size_t property_count,
const char** keys,
const napi_value* values);
napi_coerce_to_native_binding_object
napi_status napi_coerce_to_native_binding_object(napi_env env,
napi_value js_object,
napi_native_binding_detach_callback detach_cb,
napi_native_binding_attach_callback attach_cb,
void* native_object,
void* hint);
napi_run_event_loop
napi_status napi_run_event_loop(napi_env env, napi_event_mode mode);
napi_stop_event_loop
napi_status napi_stop_event_loop(napi_env env);
環(huán)境生命周期
接口 | 功能說明 |
---|---|
napi_set_instance_data | 綁定與當(dāng)前運(yùn)行的環(huán)境相關(guān)聯(lián)的數(shù)據(jù)項(xiàng)。 |
napi_get_instance_data | 檢索與當(dāng)前運(yùn)行的環(huán)境相關(guān)聯(lián)的數(shù)據(jù)項(xiàng)开泽。 |
對象生命周期管理
接口 | 功能說明 |
---|---|
napi_add_env_cleanup_hook | 注冊環(huán)境清理鉤子函數(shù)牡拇。 |
napi_remove_env_cleanup_hook | 取消環(huán)境清理鉤子函數(shù)。 |
napi_add_async_cleanup_hook | 注冊清理異步鉤子函數(shù)穆律。 |
napi_remove_async_cleanup_hook | 取消清理異步鉤子函數(shù)惠呼。 |
ArkTs基礎(chǔ)運(yùn)行時(shí)環(huán)境
接口 | 功能說明 |
---|---|
napi_create_ark_runtime | 創(chuàng)建基礎(chǔ)運(yùn)行時(shí)環(huán)境 |
napi_destroy_ark_runtime | 銷毀基礎(chǔ)運(yùn)行時(shí)環(huán)境 |
其他實(shí)用工具
接口 | 功能說明 |
---|---|
node_api_get_module_file_name | 用于獲取加載項(xiàng)加載位置的絕對路徑。 |
寫在最后
- 如果你覺得這篇內(nèi)容對你還蠻有幫助峦耘,我想邀請你幫我三個(gè)小忙:
- 點(diǎn)贊剔蹋,轉(zhuǎn)發(fā),有你們的 『點(diǎn)贊和評論』辅髓,才是我創(chuàng)造的動(dòng)力泣崩。
- 關(guān)注小編,同時(shí)可以期待后續(xù)文章ing??洛口,不定期分享原創(chuàng)知識(shí)矫付。
- 想要獲取更多完整鴻蒙最新學(xué)習(xí)知識(shí)點(diǎn),請移步前往小編:
https://gitee.com/MNxiaona/733GH/blob/master/jianshu