基本概念

  • napi即native-API是独立于javascript底层运行时的,用于构建javascript原生插件的接口。napi和javascript底层机制隔离,当javascript主线更新时,napi不需要重新编译。
  • napi有如下属性:
    • 所有的接口调用返回一个napi_status类型的状态码,用来表明接口调用成功或者失败。
    • api的返回值通过一个出参传递。
    • 所有javascript的值被抽象成了napi_value
    • 在错误状态码方面,可以通过napi_get_last_error_info获取进一步的信息,详见错误处理部分。
  • napi是一个c语言api,为了支持c++,该项目也维护了一个c++模块叫做node-addon-api。node-addon-api实际上是封装了napi。

构建

  • 需要c/c++构建工具链(gcc,clang,msvc等)。
  • node-gyp用于构建原生插件,可以使用如下命令安装:sudo npm install -g node-gyp
  • cmakejs安装sudo npm install cmake-js,可选。

上传预编译后的二进制文件

  • 上面列出来的三个工具,允许原生插件开发者创建和发布二进制形式的插件。
  • 为了方便我们的插件传播可以使用如下工具将我们的插件上传到服务器。node-pre-gypprebuildprebuildify

参考资料

  • Node.js v16.17.1 documentation

【OpenHarmony】napi基础知识学习相关推荐

  1. 计算机二级二叉树基础知识,2017年计算机二级公共基础知识学习教程:树与二叉树...

    (六)树与二叉树 1.树的基本概念 树是一种简单的非线性结构.在树结构中,数据元素之间有着明显的层次结构.在树的图形表示中,用直线连接两端的结点,上端点为前件,下端点为后件. 在树结构中,每一个结点只 ...

  2. Python 基础知识学习笔记——NumPy

    Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...

  3. Python 基础知识学习笔记——OpenCV(1)

    Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...

  4. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  5. python基础知识学习笔记(2)

    python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...

  6. python基础知识学习笔记(1)

    python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...

  7. qt checkbox 选中事件_Qt基础知识学习

    Qt基础知识学习 Qt C++ SQLite ★★★★★   Qt · 简介 Qt是由Qt Company开发的面向对象的跨平台C++图形用户界面应用程序开发框架. 前期 · 准备 01 辨析Qt(开 ...

  8. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  9. Linux操作系统基础知识学习

    Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...

最新文章

  1. WMI技术介绍和应用——查询本地用户和组
  2. 160525、高并发之mysql主从复制(linux)
  3. nginx输出日志_ingressnginx持久化日志
  4. 百度广告点击软件_结束了,百度 “毒瘤” 广告!
  5. GDB与远程(交叉)GDB调试
  6. c++ new 数组_用Java实现JVM第八章《数组和字符串》
  7. 告别.net ! 2年多了,舍不得!
  8. php5.6代码转换7.1,通过PHP5.6源代码在WINDOWS 7下进行编译生成(最详细步骤)
  9. python自动化测试报告 之 allure_Pytest+ Allure + Jenkins 自动化测试报告
  10. linux 查看mysql安装目录_Linux中安装Mysql
  11. mysql汪晓青课后答案_MySQL数据库基础实例教程
  12. modelsim编译c语言,Modelsim协同SystemC仿真
  13. Spark大数据开发技术简介
  14. 猴子摘桃c语言程序,猴子摘桃c语言
  15. 大数据之道 HMM系列
  16. Cloudera Manager 基本介绍(CDH版本)
  17. openGL增强表面细节--凹凸贴图
  18. linux下批量转换32bit wav为16bit
  19. 永洪BI携手华为云FusionInsight,让数据分析提效20倍
  20. 金蝶软件工具集4.0

热门文章

  1. OCJP 考试题之八
  2. 研发项目购置的软件服务器属于无形资产吗,购买云服务器属于无形资产
  3. Adam优化算法中的指数移动平均
  4. [Linux]线程概念_线程控制(线程与进程的区别与联系 | 线程创建 | 线程等待 | 线程终止 | 线程分离 | LWP)
  5. 意料之外,这个应用居然霸榜了苹果APP Store排行榜
  6. oracle从序列中查最大id,Oracle序列详解
  7. 均方根值(RMS)、均方根误差(RMSE)、各种平均值
  8. 关于java中的finalize()方法
  9. FTTB+NAT+DHCP+pppoe+CBAC+*** client+Authentication AAA
  10. ant弹窗_【React】急:请问ant modal(弹出框)怎么修改样式?