【OpenHarmony】napi基本用法----HelloWorld
文章目录
- 创建Hello.cc文件
- 创建binding.gyp
- 编译插件
- 测试
创建Hello.cc文件
// hello.cc using Node-API
#include <node_api.h>namespace demo {napi_value Method(napi_env env, napi_callback_info args) {napi_value greeting;napi_status status;status = napi_create_string_utf8(env, "world", NAPI_AUTO_LENGTH, &greeting);if (status != napi_ok) return nullptr;return greeting;
}napi_value init(napi_env env, napi_value exports) {napi_status status;napi_value fn;status = napi_create_function(env, nullptr, 0, Method, nullptr, &fn);if (status != napi_ok) return nullptr;status = napi_set_named_property(env, exports, "hello", fn);if (status != napi_ok) return nullptr;return exports;
}NAPI_MODULE(NODE_GYP_MODULE_NAME, init)} // namespace demo
- 每一个node.js的插件,都必须暴露如下模式的初始化函数:
void Initialize(Local<Object> exports);
NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
- 参数
module_name
除了后缀.node
不一样之外,必须和最终的二进制文件名称相匹配。 - 上述列子中,初始化函数是
init
,module_name
使用了NODE_GYP_MODULE_NAME
宏,该宏在使用node-gyp
进行编译时,会保证二进制文件名称被当作第一个参数传递给NODE_MODULE
。
创建binding.gyp
{"targets": [{"target_name": "addon","sources": [ "hello.cc" ]}]
}
- 该文件是json格式的,被工具
node-gyp
所使用,用来编译我们的插件。
编译插件
- 在我们的项目目录下执行
node-gyp configure build
编译我们的插件。 - 编译完成后在目录
./build/Release
下面会生成我们的插件的二进制文件addon.node
。
测试
- 编写测试文件如下
// hello.js
const addon = require('./build/Release/addon');console.log(addon.hello());
// Prints: 'world'
- 执行测试文件
node hello.js
,会打印world
。
全部代码在这里
【OpenHarmony】napi基本用法----HelloWorld相关推荐
- 【OpenHarmony】napi基本用法之promise实现
本文在[OpenHarmony]napi基本用法----HelloWorld的基础上展开. 什么是promise promise是javascript语言中的一个对象,其可以表示一个异步操作的成功或者 ...
- NAPI(New API)的一些浅见
NAPI真的是kernel开发者词穷想的名字吧,你看看kernel里面各种名字,不知道为啥就不能起个好听点的. 言归正传,wiki:https://en.wikipedia.org/wiki/New_ ...
- 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)
开源鸿蒙南向嵌入学习笔记--NAPI框架学习(一) 前言--系列介绍 本系列文章主要是记录笔者在鸿蒙南向的学习与工作中的知识点笔记记录,其中不止会针对鸿蒙中的学习问题进行思考与记录,也会对涉及到的一些 ...
- Openharmony应用NAPI详解--基础篇
NAPI是什么? 简单点理解就是在Openharmony里,实现上层js或ets应用与底层C/C++之间交互的框架. Openharmony里的官方解释:NAPI(Native API)组件是一套对外 ...
- Openharmony应用NAPI详解--进阶篇1
NAPI面向C++的异步接口 3.C++实现NAPI异步接口需要做到三步 同步返回结果给js/ets调用者 另起线程完成异步操作 通过回调(callback)或Promise将异步操作结果返回 4.异 ...
- Openharmony应用NAPI详解--进阶篇2
NAPI面向C++的异步接口(promise) promise方式的处理方式 承接上文,与callback方式不同的是,promise对象由C++侧创建以返回值的方式传递回js/ets侧,promis ...
- OpenHarmony 的helloWorld尝试
OpenHarmony源码结构概览 是OpenHarmony 实现了 ARCH(架构).soc(芯片).board(开发板)3 层隔离,降低了代码的耦合性.设计比较合理. # OpenHarmony ...
- 【OpenHarmony】napi基础知识学习
基本概念 napi即native-API是独立于javascript底层运行时的,用于构建javascript原生插件的接口.napi和javascript底层机制隔离,当javascript主线更新 ...
- android Messenger 用法,demo,helloworld
如果你觉得写aidl比较麻烦,android还简单封装了一个 Messenger api,可以进行简单的跨进程通信,不过我干android这么多年,从来没有见过有哪个项目用过这玩意儿,因为太麻烦,还不 ...
最新文章
- 队列的基本操作_如果让你手写个栈和队列,你还会写吗?||CSDN博客精选
- [Qt教程] 第15篇 2D绘图(五)绘制图片
- 于金刚消息引擎服务器,基于MQTT的安全通信服务器的研究与实现
- CF938E Max History
- 在Spring中记录JAX-WS SOAP消息
- 秒级启动万个容器,探秘阿里云容器镜像加速黑科技
- python asyncio tcp server_asyncio异步IO——Streams详解
- 你能理解、不能理解和不需要理解的量子计算
- 表单绑定复选框的值和图片上传
- js中对于json判断的总结(持续整理中~)
- C primer plus编程练习答案(上)
- Qt学习笔记--文件读写(QFile、QDataStream、QTextStream)
- ❤超级牛批,暴力破解聊天记录文件 ❤
- 欧拉中的俯仰、横滚、偏航角
- 【Python学习笔记】利用mplfinance画K线图
- 关于oracle数据库死锁的解决 以及产生的原因
- L1-040. 最佳情侣身高差(有坑点)
- Java 秒数分钟转小时分钟
- 信息无障碍研究机构---教育、公益等
- 全志V系统tina系统查看系统设置了哪些中断为唤醒源