目录

Node-API简介

场景介绍

HarmonyOS Node-API是基于Node.js 18.x LTS的Node-API规范扩展开发的机制,为开发者提供了ArkTS/JS与C/C++模块之间的交互能力。它提供了一组稳定的、跨平台的API,可以在不同的操作系统上使用。

本文中如无特别说明,后续均使用Node-API指代HarmonyOS Node-API能力。

HarmonyOS Node-API与Node.js 18.x LTS的Node-API规范的接口异同点,详见Node-API参考文档

一般情况下HarmonyOS应用开发使用ArkTS/JS语言,但部分场景由于性能、效率等要求,比如游戏、物理模拟等,需要依赖使用现有的C/C++库。Node-API规范封装了I/O、CPU密集型、OS底层等能力并对外暴露C接口,使用C/C++模块的注册机制,向ArkTS/JS对象上挂载属性和方法的方式来实现ArkTS/JS和C/C++的交互。主要场景如下:

Node-API的组成架构

图1 Node-API的组成架构

Node-API的关键交互流程

图2 Node-API的关键交互流程

ArkTS和C++之间的交互流程,主要分为以下两步:

  1. 初始化阶段:当ArkTS侧在import一个Native模块时,ArkTS引擎会调用ModuleManager加载模块对应的so及其依赖。首次加载时会触发模块的注册,将模块定义的方法属性挂载到exports对象上并返回该对象。

  2. 调用阶段:当ArkTS侧通过上述import返回的对象调用方法时,ArkTS引擎会找到并调用对应的C/C++方法。