harmony 鸿蒙Node-API

2022-08-09 浏览 (1697)

Node-API

简介

Node-API是用于封装JavaScript能力为Native插件的API,独立于底层JavaScript,并作为Node.js的一部分。

支持的能力

Node-API可以去除底层的JavaScript引擎的差异,提供一套稳定的接口。

OpenHarmony的N-API组件对Node-API的接口进行了重新实现,底层对接了ArkJS等引擎。当前支持Node-API标准库中的部分接口。

N-API组件标准库中导出的符号列表

符号类型符号名说明
FUNCnapi_module_registernapi native模块注册接口。
FUNCnapi_get_last_error_info获取napi_extended_error_info结构体,其中包含最近一次出现的error信息。
FUNCnapi_throw抛出一个js value。
FUNCnapi_throw_error抛出一个带文本信息的js Error
FUNCnapi_throw_type_error抛出一个带文本信息的js TypeError
FUNCnapi_throw_range_error抛出一个带文本信息的js RangeError
FUNCnapi_is_error判断napi_value是否表示为一个error对象。
FUNCnapi_create_error创建并获取一个带文本信息的js Error
FUNCnapi_create_type_error创建并获取一个带文本信息的js TypeError
FUNCnapi_create_range_error创建并获取一个带文本信息的js RangeError
FUNCnapi_get_and_clear_last_exception获取并清除最近一次出现的异常。
FUNCnapi_is_exception_pending判断是否出现了异常。
FUNCnapi_fatal_error引发致命错误以立即终止进程。
FUNCnapi_open_handle_scope创建一个上下文环境使用。
FUNCnapi_close_handle_scope关闭传入的上下文环境,关闭后,全部在其中声明的引用都将被关闭。
FUNCnapi_open_escapable_handle_scope创建出一个可逃逸的handel scope,可将范围内声明的值返回到父作用域。
FUNCnapi_close_escapable_handle_scope关闭传入的可逃逸的handel scope。
FUNCnapi_escape_handle提升传入的js object的生命周期到其父作用域。
FUNCnapi_create_referenceObject创建一个reference,以延长其生命周期。调用者需要自己管理reference生命周期。
FUNCnapi_delete_reference删除传入的reference。
FUNCnapi_reference_ref增加传入的reference的引用计数,并获取该计数。
FUNCnapi_reference_unref减少传入的reference的引用计数,并获取该计数。
FUNCnapi_get_reference_value获取与reference相关联的js Object
FUNCnapi_create_array创建并获取一个js Array
FUNCnapi_create_array_with_length创建并获取一个指定长度的js Array
FUNCnapi_create_arraybuffer创建并获取一个指定大小的js ArrayBuffer
FUNCnapi_create_external分配一个附加有外部数据的js value。
FUNCnapi_create_external_arraybuffer分配一个附加有外部数据的js ArrayBuffer
FUNCnapi_create_object创建一个默认的js Object
FUNCnapi_create_symbol创建一个js Symbol
FUNCnapi_create_typedarray通过现有的ArrayBuffer创建一个js TypeArray
FUNCnapi_create_dataview通过现有的ArrayBuffer创建一个js DataView
FUNCnapi_create_int32通过一个C的int32_t数据创建js Number
FUNCnapi_create_uint32通过一个C的uint32_t数据创建js Number
FUNCnapi_create_int64通过一个C的int64_t数据创建js Number
FUNCnapi_create_double通过一个C的double数据创建js Number
FUNCnapi_create_string_latin1通过ISO-8859-1编码的C字符串数据创建js String
FUNCnapi_create_string_utf8通过UTF8编码的C字符串数据创建js String
FUNCnapi_create_string_utf16通过UTF16编码的C字符串数据创建js String
FUNCnapi_get_array_length获取array的length。
FUNCnapi_get_arraybuffer_info获取ArrayBuffer的底层data buffer及其长度。
FUNCnapi_get_prototype获取给定js Objectprototype
FUNCnapi_get_typedarray_info获取给定TypedArray的各种属性。
FUNCnapi_get_dataview_info获取给定DataView的各种属性。
FUNCnapi_get_value_bool获取给定js Boolean对应的C bool值。
FUNCnapi_get_value_double获取给定js Number对应的C double值。
FUNCnapi_get_value_external获取先前通过napi_create_external()传递的外部数据指针。
FUNCnapi_get_value_int32获取给定js Number对应的C int32值。
FUNCnapi_get_value_int64获取给定js Number对应的C int64值。
FUNCnapi_get_value_string_latin1获取给定js vaule对应的ISO-8859-1编码的字符串。
FUNCnapi_get_value_string_utf8获取给定js vaule对应的UTF8编码的字符串。
FUNCnapi_get_value_string_utf16获取给定js vaule对应的UTF16编码的字符串。
FUNCnapi_get_value_uint32获取给定js Number对应的C uint32值。
FUNCnapi_get_boolean根据给定的C boolean值,获取js bool对象。
FUNCnapi_get_global获取global对象。
FUNCnapi_get_null获取null对象。
FUNCnapi_get_undefined获取undefined对象。
FUNCnapi_coerce_to_bool将给定的js value强转成js Boolean
FUNCnapi_coerce_to_number将给定的js value强转成js Number
FUNCnapi_coerce_to_object将给定的js value强转成js Object
FUNCnapi_coerce_to_string将给定的js value强转成js String
FUNCnapi_typeof获取给定js value的js type。
FUNCnapi_instanceof判断给定object是否为给定constructor的实例。
FUNCnapi_is_array判断给定js value是否为array。
FUNCnapi_is_arraybuffer判断给定js value是否为ArrayBuffer
FUNCnapi_is_typedarray判断给定js value是否表示一个TypedArray
FUNCnapi_is_dataview判断给定js value是否表示一个DataView
FUNCnapi_is_date判断给定js value是否为js Date对象。
FUNCnapi_strict_equals判断给定的两个js value是否严格相等。
FUNCnapi_get_property_names以字符串数组的形式获取对象的可枚举属性的名称。
FUNCnapi_set_property对给定Object设置属性。
FUNCnapi_get_property获取给定Object的给定属性。
FUNCnapi_has_property判断给定对象中是否存在给定属性。
FUNCnapi_delete_property尝试从给定Object中删除给定key属性。
FUNCnapi_has_own_property判断给定Object中是否有名为key的own property。
FUNCnapi_set_named_property对给定Object设置一个给定名称的属性。
FUNCnapi_get_named_property获取给定Object中指定名称的属性。
FUNCnapi_has_named_property判断给定Object中是否有给定名称的属性。
FUNCnapi_set_element在给定Object的指定索引处,设置元素。
FUNCnapi_get_element获取给定Object指定索引处的元素。
FUNCnapi_has_element若给定Object的指定索引处拥有属性,获取该元素。
FUNCnapi_delete_element尝试删除给定Object的指定索引处的元素。
FUNCnapi_define_properties批量的向给定Object中定义属性。
FUNCnapi_type_tag_object将tag指针的值与Object关联。
FUNCnapi_check_object_type_tag判断给定的tag指针是否被关联到了js Object上。
FUNCnapi_call_function在Native方法中调用js function,即native call js。
FUNCnapi_create_function创建native方法给js使用,以便于js call native。
FUNCnapi_get_cb_info从给定的callback info中获取有关调用的详细信息,如参数和this指针。
FUNCnapi_get_new_target获取构造函数调用的new.target
FUNCnapi_new_instance通过给定的构造函数,构建一个实例。
FUNCnapi_define_class定义与C++类相对应的JavaScript类。
FUNCnapi_wrap在js object上绑定一个native对象实例。
FUNCnapi_unwrap从js object上获取先前绑定的native对象实例。
FUNCnapi_remove_wrap从js object上获取先前绑定的native对象实例,并解除绑定。
FUNCnapi_create_async_work创建一个异步工作对象。
FUNCnapi_delete_async_work释放先前创建的异步工作对象。
FUNCnapi_queue_async_work将异步工作对象加到队列,由底层去调度执行。
FUNCnapi_cancel_async_work取消入队的异步任务。
FUNCnapi_get_node_version获取node的版本信息。
FUNCnapi_get_version获取Node运行时支持的最高 N-API 版本。
FUNCnapi_create_promise创建一个延迟对象和js promise。
FUNCnapi_resolve_deferredresolve与js promise对象关联的延迟函数。
FUNCnapi_reject_deferredreject与js promise对象关联的延迟函数。
FUNCnapi_is_promise判断给定js value是否为promise对象。
FUNCnapi_get_uv_event_loop获取当前libuv loop实例。
FUNCnapi_create_threadsafe_function创建线程安全函数。
FUNCnapi_get_threadsafe_function_context获取线程安全函数中的context。
FUNCnapi_call_threadsafe_function调用线程安全函数。
FUNCnapi_acquire_threadsafe_function指示线程安全函数可以开始使用。
FUNCnapi_release_threadsafe_function指示线程安全函数将停止使用。
FUNCnapi_ref_threadsafe_function指示在主线程上运行的事件循环在线程安全函数被销毁之前不应退出。
FUNCnapi_unref_threadsafe_function指示在主线程上运行的事件循环可能会在线程安全函数被销毁之前退出。
FUNCnapi_create_date通过一个C的double数据创建js Date
FUNCnapi_get_date_value获取给定js Date对应的C double值。
FUNCnapi_create_bigint_int64通过一个C的int64数据创建js BigInt
FUNCnapi_create_bigint_uint64通过一个C的uint64数据创建js BigInt
FUNCnapi_create_bigint_words通过一个C的uint64数组创建单个js BigInt
FUNCnapi_get_value_bigint_int64获取给定js BigInt对应的C int64值。
FUNCnapi_get_value_bigint_uint64获取给定js BigInt对应的C uint64值。
FUNCnapi_get_value_bigint_words获取给定js BigInt对应的信息,包括符号位、64位小端序数组和数组中的元素个数。
FUNCnapi_create_buffer创建并获取一个指定大小的js Buffer
FUNCnapi_create_buffer_copy创建并获取一个指定大小的js Buffer,并以给定数据进行初始化。
FUNCnapi_create_external_buffer创建并获取一个指定大小的js Buffer,并以给定数据进行初始化,该接口可为Buffer附带额外数据。
FUNCnapi_get_buffer_info获取js Buffer底层data及其长度。
FUNCnapi_is_buffer判断给定js value是否为Buffer对象。
FUNCnapi_object_freeze冻结给定的对象。
FUNCnapi_object_seal密封给定的对象。
FUNCnapi_get_all_property_names获取一个数组,其中包含此对象过滤后的属性名称。
FUNCnapi_detach_arraybuffer分离给定ArrayBuffer的底层数据。
FUNCnapi_is_detached_arraybuffer判断给定的ArrayBuffer是否已被分离过。

N-API组件扩展的符号列表

符号类型符号名说明
FUNCnapi_queue_async_work_with_qos将异步工作对象加到队列,由底层根据传入的qos优先级去调度执行。
FUNCnapi_run_script_path运行abc文件。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙1.0.0 (2022/03/09)

harmony 鸿蒙1.0.0 (2022/03/09)

harmony 鸿蒙OpenHarmony Docker镜像

harmony 鸿蒙OpenHarmony Docker Image

harmony 鸿蒙Legal Notices

harmony 鸿蒙OpenHarmony Project

harmony 鸿蒙IDL Specifications and User Guide (for System Applications Only)

harmony 鸿蒙Application Development

harmony 鸿蒙OAID Service

harmony 鸿蒙AI

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/264cf48cc9ec47499ba70174723116e5