FFI能力(N-API)
ArkUI-X中支持的N-API接口情況
Node-API是封裝底層JavaScript運(yùn)行時(shí)能力的一套Native接口。OpenHarmony的N-API組件對(duì)Node-API的接口進(jìn)行了重新實(shí)現(xiàn),ArkUI-X同樣擁有這部分能力,目前支持部分接口,支持列表。
Node-API
簡介
Node-API是封裝底層JavaScript運(yùn)行時(shí)能力的一套Native接口。
支持的能力
Node-API屏蔽了底層不同JavaScript引擎的差異,提供一套穩(wěn)定的接口。
OpenHarmony的N-API組件對(duì)Node-API的接口進(jìn)行了重新實(shí)現(xiàn),ArkUI-X在此基礎(chǔ)上進(jìn)行了跨平臺(tái)擴(kuò)展,N-API接口可以在OpenHarmony/HarmonyOS/Android/iOS多個(gè)平臺(tái)上使用。當(dāng)前支持[Node-API]標(biāo)準(zhǔn)庫中的部分接口,如下表所示。
N-API組件擴(kuò)展的符號(hào)列表
開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
標(biāo)準(zhǔn)庫中導(dǎo)出的符號(hào)列表
符號(hào)類型 | 符號(hào)名 | 說明 |
---|---|---|
FUNC | napi_module_register | napi native模塊注冊(cè)接口。 |
FUNC | napi_get_last_error_info | 獲取napi_extended_error_info 結(jié)構(gòu)體,其中包含最近一次出現(xiàn)的error信息。 |
FUNC | napi_throw | 拋出一個(gè)js value。 |
FUNC | napi_throw_error | 拋出一個(gè)帶文本信息的jsError 。 |
FUNC | napi_throw_type_error | 拋出一個(gè)帶文本信息的jsTypeError 。 |
FUNC | napi_throw_range_error | 拋出一個(gè)帶文本信息的jsRangeError 。 |
FUNC | napi_is_error | 判斷napi_value 是否表示為一個(gè)error對(duì)象。 |
FUNC | napi_create_error | 創(chuàng)建并獲取一個(gè)帶文本信息的jsError 。 |
FUNC | napi_create_type_error | 創(chuàng)建并獲取一個(gè)帶文本信息的jsTypeError 。 |
FUNC | napi_create_range_error | 創(chuàng)建并獲取一個(gè)帶文本信息的jsRangeError 。 |
FUNC | napi_get_and_clear_last_exception | 獲取并清除最近一次出現(xiàn)的異常。 |
FUNC | napi_is_exception_pending | 判斷是否出現(xiàn)了異常。 |
FUNC | napi_fatal_error | 引發(fā)致命錯(cuò)誤以立即終止進(jìn)程。 |
FUNC | napi_open_handle_scope | 創(chuàng)建一個(gè)上下文環(huán)境使用。 |
FUNC | napi_close_handle_scope | 關(guān)閉傳入的上下文環(huán)境,關(guān)閉后,在其中聲明的全部napi_value 都將被回收。 |
FUNC | napi_open_escapable_handle_scope | 創(chuàng)建出一個(gè)可逃逸的handel scope,可將范圍內(nèi)聲明的值返回到父作用域。 |
FUNC | napi_close_escapable_handle_scope | 關(guān)閉傳入的可逃逸的handel scope。 |
FUNC | napi_escape_handle | 提升傳入的js object的生命周期到其父作用域。 |
FUNC | napi_create_reference | 為napi_value 創(chuàng)建一個(gè)reference,提升js對(duì)象生命周期。調(diào)用者需要自己管理reference生命周期。 |
FUNC | napi_delete_reference | 刪除傳入的reference。 |
FUNC | napi_reference_ref | 增加傳入的reference的引用計(jì)數(shù),并獲取該計(jì)數(shù)。 |
FUNC | napi_reference_unref | 減少傳入的reference的引用計(jì)數(shù),并獲取該計(jì)數(shù)。 |
FUNC | napi_get_reference_value | 獲取與reference相關(guān)聯(lián)的jsObject 。 |
FUNC | napi_create_array | 創(chuàng)建并獲取一個(gè)jsArray 。 |
FUNC | napi_create_array_with_length | 創(chuàng)建并獲取一個(gè)指定長度的jsArray 。 |
FUNC | napi_create_arraybuffer | 創(chuàng)建并獲取一個(gè)指定大小的jsArrayBuffer 。 |
FUNC | napi_create_external | 分配一個(gè)附加有外部數(shù)據(jù)的js value。 |
FUNC | napi_create_external_arraybuffer | 分配一個(gè)附加有外部數(shù)據(jù)的jsArrayBuffer 。 |
FUNC | napi_create_object | 創(chuàng)建一個(gè)默認(rèn)的jsObject 。 |
FUNC | napi_create_symbol | 創(chuàng)建一個(gè)jsSymbol 。 |
FUNC | napi_create_typedarray | 通過現(xiàn)有的ArrayBuffer 創(chuàng)建一個(gè)jsTypeArray 。 |
FUNC | napi_create_dataview | 通過現(xiàn)有的ArrayBuffer 創(chuàng)建一個(gè)jsDataView 。 |
FUNC | napi_create_int32 | 通過一個(gè)C的int32_t 數(shù)據(jù)創(chuàng)建jsNumber 。 |
FUNC | napi_create_uint32 | 通過一個(gè)C的uint32_t 數(shù)據(jù)創(chuàng)建jsNumber 。 |
FUNC | napi_create_int64 | 通過一個(gè)C的int64_t 數(shù)據(jù)創(chuàng)建jsNumber 。 |
FUNC | napi_create_double | 通過一個(gè)C的double 數(shù)據(jù)創(chuàng)建jsNumber 。 |
FUNC | napi_create_string_latin1 | 通過ISO-8859-1編碼的C字符串?dāng)?shù)據(jù)創(chuàng)建jsString 。 |
FUNC | napi_create_string_utf8 | 通過UTF8編碼的C字符串?dāng)?shù)據(jù)創(chuàng)建jsString 。 |
FUNC | napi_create_string_utf16 | 通過UTF16編碼的C字符串?dāng)?shù)據(jù)創(chuàng)建jsString 。 |
FUNC | napi_get_array_length | 獲取array的length。 |
FUNC | napi_get_arraybuffer_info | 獲取ArrayBuffer 的底層data buffer及其長度。 |
FUNC | napi_get_prototype | 獲取給定jsObject 的prototype 。 |
FUNC | napi_get_typedarray_info | 獲取給定TypedArray 的各種屬性。 |
FUNC | napi_get_dataview_info | 獲取給定DataView 的各種屬性。 |
FUNC | napi_get_value_bool | 獲取給定jsBoolean 對(duì)應(yīng)的C bool值。 |
FUNC | napi_get_value_double | 獲取給定jsNumber 對(duì)應(yīng)的C double值。 |
FUNC | napi_get_value_external | 獲取先前通過napi_create_external()傳遞的外部數(shù)據(jù)指針。 |
FUNC | napi_get_value_int32 | 獲取給定jsNumber 對(duì)應(yīng)的C int32值。 |
FUNC | napi_get_value_int64 | 獲取給定jsNumber 對(duì)應(yīng)的C int64值。 |
FUNC | napi_get_value_string_latin1 | 獲取給定js vaule對(duì)應(yīng)的ISO-8859-1編碼的字符串。 |
FUNC | napi_get_value_string_utf8 | 獲取給定js vaule對(duì)應(yīng)的UTF8編碼的字符串。 |
FUNC | napi_get_value_string_utf16 | 獲取給定js vaule對(duì)應(yīng)的UTF16編碼的字符串。 |
FUNC | napi_get_value_uint32 | 獲取給定jsNumber 對(duì)應(yīng)的C uint32值。 |
FUNC | napi_get_boolean | 根據(jù)給定的C boolean值,獲取js bool對(duì)象。 |
FUNC | napi_get_global | 獲取global 對(duì)象。 |
FUNC | napi_get_null | 獲取null 對(duì)象。 |
FUNC | napi_get_undefined | 獲取undefined 對(duì)象。 |
FUNC | napi_coerce_to_bool | 將給定的js value強(qiáng)轉(zhuǎn)成jsBoolean 。 |
FUNC | napi_coerce_to_number | 將給定的js value強(qiáng)轉(zhuǎn)成jsNumber 。 |
FUNC | napi_coerce_to_object | 將給定的js value強(qiáng)轉(zhuǎn)成jsObject 。 |
FUNC | napi_coerce_to_string | 將給定的js value強(qiáng)轉(zhuǎn)成jsString 。 |
FUNC | napi_typeof | 獲取給定js value的js type。 |
FUNC | napi_instanceof | 判斷給定object是否為給定constructor的實(shí)例。 |
FUNC | napi_is_array | 判斷給定js value是否為array。 |
FUNC | napi_is_arraybuffer | 判斷給定js value是否為ArrayBuffer 。 |
FUNC | napi_is_typedarray | 判斷給定js value是否表示一個(gè)TypedArray 。 |
FUNC | napi_is_dataview | 判斷給定js value是否表示一個(gè)DataView 。 |
FUNC | napi_is_date | 判斷給定js value是否為jsDate 對(duì)象。 |
FUNC | napi_strict_equals | 判斷給定的兩個(gè)js value是否嚴(yán)格相等。 |
FUNC | napi_get_property_names | 以字符串?dāng)?shù)組的形式獲取對(duì)象的可枚舉屬性的名稱。 |
FUNC | napi_set_property | 對(duì)給定Object 設(shè)置屬性。 |
FUNC | napi_get_property | 獲取給定Object 的給定屬性。 |
FUNC | napi_has_property | 判斷給定對(duì)象中是否存在給定屬性。 |
FUNC | napi_delete_property | 嘗試從給定Object 中刪除給定key 屬性。 |
FUNC | napi_has_own_property | 判斷給定Object 中是否有名為key 的own property。 |
FUNC | napi_set_named_property | 對(duì)給定Object 設(shè)置一個(gè)給定名稱的屬性。 |
FUNC | napi_get_named_property | 獲取給定Object 中指定名稱的屬性。 |
FUNC | napi_has_named_property | 判斷給定Object 中是否有給定名稱的屬性。 |
FUNC | napi_set_element | 在給定Object 的指定索引處,設(shè)置元素。 |
FUNC | napi_get_element | 獲取給定Object 指定索引處的元素。 |
FUNC | napi_has_element | 若給定Object 的指定索引處擁有屬性,獲取該元素。 |
FUNC | napi_delete_element | 嘗試刪除給定Object 的指定索引處的元素。 |
FUNC | napi_define_properties | 批量的向給定Object 中定義屬性。 |
FUNC | napi_type_tag_object | 將tag指針的值與Object 關(guān)聯(lián)。 |
FUNC | napi_check_object_type_tag | 判斷給定的tag指針是否被關(guān)聯(lián)到了jsObject 上。 |
FUNC | napi_call_function | 在Native方法中調(diào)用js function,即native call js。 |
FUNC | napi_create_function | 創(chuàng)建native方法給js使用,以便于js call native。 |
FUNC | napi_get_cb_info | 從給定的callback info中獲取有關(guān)調(diào)用的詳細(xì)信息,如參數(shù)和this指針。 |
FUNC | napi_get_new_target | 獲取構(gòu)造函數(shù)調(diào)用的new.target 。 |
FUNC | napi_new_instance | 通過給定的構(gòu)造函數(shù),構(gòu)建一個(gè)實(shí)例。 |
FUNC | napi_define_class | 定義與C++類相對(duì)應(yīng)的JavaScript類。 |
FUNC | napi_wrap | 在js object上綁定一個(gè)native對(duì)象實(shí)例。 |
FUNC | napi_unwrap | 從js object上獲取先前綁定的native對(duì)象實(shí)例。 |
FUNC | napi_remove_wrap | 從js object上獲取先前綁定的native對(duì)象實(shí)例,并解除綁定。 |
FUNC | napi_create_async_work | 創(chuàng)建一個(gè)異步工作對(duì)象。 |
FUNC | napi_delete_async_work | 釋放先前創(chuàng)建的異步工作對(duì)象。 |
FUNC | napi_queue_async_work | 將異步工作對(duì)象加到隊(duì)列,由底層去調(diào)度執(zhí)行。 |
FUNC | napi_cancel_async_work | 取消入隊(duì)的異步任務(wù)。 |
FUNC | napi_get_node_version | 獲取node的版本信息。 |
FUNC | napi_get_version | 獲取Node運(yùn)行時(shí)支持的最高 N-API 版本。 |
FUNC | napi_create_promise | 創(chuàng)建一個(gè)延遲對(duì)象和js promise。 |
FUNC | napi_resolve_deferred | resolve與js promise對(duì)象關(guān)聯(lián)的延遲函數(shù)。 |
FUNC | napi_reject_deferred | reject與js promise對(duì)象關(guān)聯(lián)的延遲函數(shù)。 |
FUNC | napi_is_promise | 判斷給定js value是否為promise對(duì)象。 |
FUNC | napi_get_uv_event_loop | 獲取當(dāng)前l(fā)ibuv loop實(shí)例。 |
FUNC | napi_create_threadsafe_function | 創(chuàng)建線程安全函數(shù)。 |
FUNC | napi_get_threadsafe_function_context | 獲取線程安全函數(shù)中的context。 |
FUNC | napi_call_threadsafe_function | 調(diào)用線程安全函數(shù)。 |
FUNC | napi_acquire_threadsafe_function | 指示線程安全函數(shù)可以開始使用。 |
FUNC | napi_release_threadsafe_function | 指示線程安全函數(shù)將停止使用。 |
FUNC | napi_ref_threadsafe_function | 指示在主線程上運(yùn)行的事件循環(huán)在線程安全函數(shù)被銷毀之前不應(yīng)退出。 |
FUNC | napi_unref_threadsafe_function | 指示在主線程上運(yùn)行的事件循環(huán)可能會(huì)在線程安全函數(shù)被銷毀之前退出。 |
FUNC | napi_create_date | 通過一個(gè)C的double 數(shù)據(jù)創(chuàng)建jsDate 。 |
FUNC | napi_get_date_value | 獲取給定jsDate 對(duì)應(yīng)的C double值。 |
FUNC | napi_create_bigint_int64 | 通過一個(gè)C的int64 數(shù)據(jù)創(chuàng)建jsBigInt 。 |
FUNC | napi_create_bigint_uint64 | 通過一個(gè)C的uint64 數(shù)據(jù)創(chuàng)建jsBigInt 。 |
FUNC | napi_create_bigint_words | 通過一個(gè)C的uint64 數(shù)組創(chuàng)建單個(gè)jsBigInt 。 |
FUNC | napi_get_value_bigint_int64 | 獲取給定jsBigInt 對(duì)應(yīng)的C int64值。 |
FUNC | napi_get_value_bigint_uint64 | 獲取給定jsBigInt 對(duì)應(yīng)的C uint64值。 |
FUNC | napi_get_value_bigint_words | 獲取給定jsBigInt 對(duì)應(yīng)的信息,包括符號(hào)位、64位小端序數(shù)組和數(shù)組中的元素個(gè)數(shù)。 |
FUNC | napi_create_buffer | 創(chuàng)建并獲取一個(gè)指定大小的jsBuffer 。 |
FUNC | napi_create_buffer_copy | 創(chuàng)建并獲取一個(gè)指定大小的jsBuffer ,并以給定數(shù)據(jù)進(jìn)行初始化。 |
FUNC | napi_create_external_buffer | 創(chuàng)建并獲取一個(gè)指定大小的jsBuffer ,并以給定數(shù)據(jù)進(jìn)行初始化,該接口可為Buffer 附帶額外數(shù)據(jù)。 |
FUNC | napi_get_buffer_info | 獲取jsBuffer 底層data及其長度。 |
FUNC | napi_is_buffer | 判斷給定js value是否為Buffer 對(duì)象。 |
FUNC | napi_object_freeze | 凍結(jié)給定的對(duì)象。 |
FUNC | napi_object_seal | 密封給定的對(duì)象。 |
FUNC | napi_get_all_property_names | 獲取一個(gè)數(shù)組,其中包含此對(duì)象過濾后的屬性名稱。 |
FUNC | napi_detach_arraybuffer | 分離給定ArrayBuffer 的底層數(shù)據(jù)。 |
FUNC | napi_is_detached_arraybufferHarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 | 判斷給定的ArrayBuffer 是否已被分離過。 |
ArkUI-X中N-API的使用場景
在OpenHarmony中,N-API接口可以實(shí)現(xiàn)ArkTS/TS/JS與C/C++(Native)之間的交互。ArkUI-X在此基礎(chǔ)上進(jìn)行了跨平臺(tái)的拓展,開發(fā)者可在OpenHarmony/HarmonyOS/Android/iOS多個(gè)平臺(tái)上使用N-API能力,完成跨語言工程開發(fā)。ArkUI-X中的N-API典型使用場景與OpenHarmony相同,即:
- 通過N-API封裝Native能力,暴露相應(yīng)接口到ArkTS/TS/JS層,即ArkTS/TS/JS call Native。
- Native代碼中調(diào)用ArkTS/TS/JS提供的方法,即Native call ArkTS/TS/JS。
審核編輯 黃宇
-
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151015 -
API
+關(guān)注
關(guān)注
2文章
1499瀏覽量
61961 -
javascript
+關(guān)注
關(guān)注
0文章
516瀏覽量
53850 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2339瀏覽量
42805
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論