文章目录

  • 创建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不一样之外,必须和最终的二进制文件名称相匹配。
  • 上述列子中,初始化函数是initmodule_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相关推荐

  1. 【OpenHarmony】napi基本用法之promise实现

    本文在[OpenHarmony]napi基本用法----HelloWorld的基础上展开. 什么是promise promise是javascript语言中的一个对象,其可以表示一个异步操作的成功或者 ...

  2. NAPI(New API)的一些浅见

    NAPI真的是kernel开发者词穷想的名字吧,你看看kernel里面各种名字,不知道为啥就不能起个好听点的. 言归正传,wiki:https://en.wikipedia.org/wiki/New_ ...

  3. 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)

    开源鸿蒙南向嵌入学习笔记--NAPI框架学习(一) 前言--系列介绍 本系列文章主要是记录笔者在鸿蒙南向的学习与工作中的知识点笔记记录,其中不止会针对鸿蒙中的学习问题进行思考与记录,也会对涉及到的一些 ...

  4. Openharmony应用NAPI详解--基础篇

    NAPI是什么? 简单点理解就是在Openharmony里,实现上层js或ets应用与底层C/C++之间交互的框架. Openharmony里的官方解释:NAPI(Native API)组件是一套对外 ...

  5. Openharmony应用NAPI详解--进阶篇1

    NAPI面向C++的异步接口 3.C++实现NAPI异步接口需要做到三步 同步返回结果给js/ets调用者 另起线程完成异步操作 通过回调(callback)或Promise将异步操作结果返回 4.异 ...

  6. Openharmony应用NAPI详解--进阶篇2

    NAPI面向C++的异步接口(promise) promise方式的处理方式 承接上文,与callback方式不同的是,promise对象由C++侧创建以返回值的方式传递回js/ets侧,promis ...

  7. OpenHarmony 的helloWorld尝试

    OpenHarmony源码结构概览 是OpenHarmony 实现了 ARCH(架构).soc(芯片).board(开发板)3 层隔离,降低了代码的耦合性.设计比较合理. # OpenHarmony ...

  8. 【OpenHarmony】napi基础知识学习

    基本概念 napi即native-API是独立于javascript底层运行时的,用于构建javascript原生插件的接口.napi和javascript底层机制隔离,当javascript主线更新 ...

  9. android Messenger 用法,demo,helloworld

    如果你觉得写aidl比较麻烦,android还简单封装了一个 Messenger api,可以进行简单的跨进程通信,不过我干android这么多年,从来没有见过有哪个项目用过这玩意儿,因为太麻烦,还不 ...

最新文章

  1. 队列的基本操作_如果让你手写个栈和队列,你还会写吗?||CSDN博客精选
  2. [Qt教程] 第15篇 2D绘图(五)绘制图片
  3. 于金刚消息引擎服务器,基于MQTT的安全通信服务器的研究与实现
  4. CF938E Max History
  5. 在Spring中记录JAX-WS SOAP消息
  6. 秒级启动万个容器,探秘阿里云容器镜像加速黑科技
  7. python asyncio tcp server_asyncio异步IO——Streams详解
  8. 你能理解、不能理解和不需要理解的量子计算
  9. 表单绑定复选框的值和图片上传
  10. js中对于json判断的总结(持续整理中~)
  11. C primer plus编程练习答案(上)
  12. Qt学习笔记--文件读写(QFile、QDataStream、QTextStream)
  13. ❤超级牛批,暴力破解聊天记录文件 ❤
  14. 欧拉中的俯仰、横滚、偏航角
  15. 【Python学习笔记】利用mplfinance画K线图
  16. 关于oracle数据库死锁的解决 以及产生的原因
  17. L1-040. 最佳情侣身高差(有坑点)
  18. Java 秒数分钟转小时分钟
  19. 信息无障碍研究机构---教育、公益等
  20. 全志V系统tina系统查看系统设置了哪些中断为唤醒源

热门文章

  1. 网络分级设计模型:核心层、汇聚层和接入层
  2. 前端的组件化和模块化
  3. 用RSA算法加密文本文件
  4. 用HTML写一个标准秒表,JavaScript写秒表
  5. 用js函数判断一个数是否为素数
  6. Webpack(打包工具)
  7. 使用JS打印九九乘法表
  8. 普源精电科创板上市:股价重挫35% 公司市值48亿
  9. R语言-坐标轴画法要旨
  10. 广东工程职业技术学院计算机二级,高职高考必看|全面了解广东工程职业技术学院...