首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    零基础开发 Node.js Addons 插件:Hello Node-API

    typedef napi_value (*napi_callback)(napi_env, napi_callback_info); 让我们自定义一个方法 getNApiInfo 返回一个 Hello...; return str; } 如果使用 Node-API 以 C 的写法如下所示,看起来又有几个不熟悉的 API,让我们解释下: napi_status:表示 Node-API 调用成功或失败的状态码...napi_create_string_utf8() 该方法用于创建一个 UTF8 格式的字符串,其返回值是一个 status 表示是否创建成功,所以我们在最后一个参数传入了一个指针存储返回值。...strlen(str):第三个参数是字符串长度,也可使用 NAPI_AUTO_LENGTH 表示,如果使用 strlen() 函数需要引入头文件 #include 。...return result; } 模块注册 模块注册也就是将我们写的方法以模块形式导出,如果使用 JavaScript 表示如下所示: module.exports = { getNApiInfo

    3.2K30

    ArkUI实战开发-NAPI方法扩展

    声明md5方法在 index.d.ts 文件中声明一个 md5() 方法,该方法接收一个 string 参数,返回类型也是 string 类型,表示经过 MD5 计算后的值,样例代码如下所示:export...// 9、资源清理 delete[] buffer; buffer = nullptr; // 返回 value return value;}Md5() 方法的解释说明的很清楚...;第 5 步如果传递的参数为 "" 则抛异常;第 6 步根据参数长度把参数读取出来放入 buffer 里,第 7 布模拟 MD5 操作直接在参数末尾追加 [NAPI] 字符串,第 8 步把 C++ 类型转换成... napi_value 类型,第 9 布清理资源,第 10 步返回结果。...测试C++方法根据 Md5() 方法的实现,限制条件是不允许数据 null 和 "",如果输入则抛异常。

    26020

    听 GPT 讲 Deno 源代码 (13)

    parse方法用于解析锁文件,返回一个NpmLock结构体实例。 NpmLockEntry结构体:表示NpmLock中的一条依赖项记录。...具体地,这个文件定义了如下一些结构体(struct)和枚举类型(enum): ModuleCodeStringSource:这个结构体表示模块代码字符串的来源。...它接收一个EnvOptions实例作为参数,根据该参数来创建和配置NAPI环境,并返回一个Arc类型的Result结果。...这些性能测试旨在测量不同的UTF-8字符串操作函数的执行时间,以评估其性能和效率。 具体而言,该文件包含了一系列用于测试UTF-8编码处理函数的基准测试函数。...字符串编码:将Unicode字符集中的字符编码为UTF-8编码的字节序列。 字符串长度计算:计算UTF-8编码的字符串的长度(以字节为单位)。

    33210

    北向应用集成三方库——NAPI生命周期

    设置局部生命周期因为在napi中全部js相关的值都是一个不透明的封装,默认生命周期是和全局一致的,有时候处于安全和性能的考虑,须要将一些值的生命周期限制在必定的范围之内,此时我们就需要用到NAPI相关的接口来...= napi_ok) { break; }}此时,因为限制了做用域,因此每一个result的生命周期都被限制在了单次循环以内。...in env - 当前环境变量out result - 根据当前环境创建的生命周期变量返回:napi_status,成功返回0,失败返回其他napi_status napi_close_escapable_handle_scope...参数说明:in env - 当前环境变量out scope - 需要关闭的生命周期变量返回:napi_status,成功返回0,失败返回其他设置全局生命周期在某些情况下,插件需要能够创建和引用具有比单个本地方法调用更长的生命周期的对象...:napi_status,成功返回0,失败其他NAPI生命周期管理实现这里我们以TestNapi为例(关于工程创建可以参照通过IDE开发一个Napi工程)首先新建一个 hello.cpp,实现 NAPI

    30010

    三方库移植之NAPI开发异步调用:Callback&Promise

    out result: napi_async_work*指针,用于返回当前此处函数调用创建的异步工作项。 返回值:返回napi_ok表示转换成功,其他值失败。...Callback异步模型用户在调用接口的时候,接口实现将异步执行任务任务执行结果以参数的形式提供给用户注册的回调函数,这些参数的第一个是 Error 或 undefined 类型,分别表示执行出错与正常...返回值:返回napi_ok表示转换成功,其他值失败。napi_ref引用对象在原生方法退出后不自动回收,由用户管理napi_ref类型对象的生命周期。...//&addonData->asyncWork: 用于返回当前此处函数调用创建的异步工作项。 返回值:返回napi_ok表示转换成功,其他值失败。...in argv: 函数参数数组.out result: func函数执行的返回值。 返回值:返回napi_ok表示转换成功,其他值失败。

    77620

    Node.js 原生模块开发方式变迁

    为了达成上述隐藏的目标,N-API 的姿势就变成了这样: 提供头文件 node_api.h; 任何 N-API 调用都返回一个 napi_status 枚举,来表示这次调用成功与否; N-API 的返回值由于被...return 0; // napi_value 实际上是一个指针,返回空指针表示无返回值 } return argv[0]; } 重要:目前 8.0.0 和 8.1.0 版本的 Node.js...通过 napi_get_cb_info 获取当次函数请求的参数信息,包括参数数量和参数体(参数体以 napi_value 的数组形式体现); 看看解析有无出错(status 不等于 napi_ok)或者看看参数数量是否小于...开头的字符串在 GYP 中代表指令,表示它的值是后面的指令的执行结果。...上面两条指令的返回结果分别是外挂式头文件的头文件搜索路径,以及外挂式 N-API 这个包编译成静态连接库供我们自己的包使用的依赖声明。 有了这两个字段后,就表示我们依赖了外挂式 N-API 头文件。

    1.6K30

    初识鸿蒙 NAPI:从概念到踩坑的跨语言开发入门

    : 统一容器:用napi_value封装所有 ArkTS 数据(数字、字符串、函数等在原生代码中均以napi_value表示); 类型转换:通过napi_get_value_double(ArkTS...Number 转 C++ double)、napi_create_string_utf8(C++ 字符串转 ArkTS String)等接口,实现数据的双向映射。...例如,将 ArkTS 传入的两个数字相加,原生代码需先通过napi_get_value_double提取数值,计算后再通过napi_create_double返回结果。...原生调用 ArkTS 回调:ArkTS 将回调函数作为参数传入原生模块,原生代码在异步任务完成后(如 IO 操作),通过napi_call_function触发回调,将结果返回给 ArkTS。...(SHARED表示动态库,鸿蒙 NAPI 必须用动态库); napi_init.cpp是原生代码文件(包含 NAPI 函数、模块注册逻辑),可添加多个源文件(如napi_init.cpp utils.cpp

    26000

    HarmonyOS 开发实践 —— 基于JSVM创建引擎执行JS代码并销毁

    JSVM_EXTERN JSVM_Status OH_JSVM_OpenHandleScope(JSVM_Env env,JSVM_HandleScope* result);// 编译一串JS代码,并返回编译后脚本...调用Native的创建虚拟机及环境的接口,绑定MyCallback回调(用于JS代码里onJSResultCallback方法的回调),接收native返回的虚拟机id。...调用Native的执行JS代码的接口,传入虚拟机id和JS代码字符串,在native侧的虚拟机里编译并执行。调用Native的销毁虚拟机及环境的接口,传入虚拟机id,指定销毁对应的虚拟机和环境。...napi_ref callFun;  //为Object创建一个reference,以延长其生命周期。调用者需要自己管理reference生命周期。 ...,将其替换为上面从JS文件中获取到的JS字符串。

    66520
    领券