在HarmonyOS系统中,通常应用的开发使用ArkTS/JS语言,但部分场景由于性能、效率等要求,比如游戏、物理模拟等,需要依赖使用现有的C/C++库。
在HarmonyOS中, Node-API是基于Node.js 18.x LTS的Node-API规范扩展开发的机制,为开发者提供了ArkTS/JS与C/C++模块之间的交互能力。它提供了一组稳定的、跨平台的API,可以在不同的操作系统上使用。
Node-API规范封装了I/O、CPU密集型、OS底层等能力并对外暴露C接口,使用C/C++模块的注册机制,向ArkTS/JS对象上挂载属性和方法的方式来实现ArkTS/JS和C/C++的交互。主要场景主要有以下两部分:
- 系统可以将框架层丰富的模块功能通过Node-API的模块注册机制对外暴露ArkTS/JS的接口,将C/C++的能力开放给应用的ArkTS/JS层。
- 应用开发者也可以选择将一些对性能、底层系统调用有要求的核心功能用C/C++封装实现,再通过ArkTS/JS接口使用,提高应用本身的执行效率。
本篇内容是《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》这本书第14章内容的延续,是咱这本书读者的福利,在本篇内容中简单的介绍Node-API,欢迎大家一同来深入的了解,甚至可以当作面试题来学习。
对本书感兴趣的同学可以点击以下链接进行购买,及参加 我的班级(华为官方)共同学习
- 机械工业出版社官方京东旗舰店
- 机械工业出版社京东自营旗舰店
- 机械工业出版社官方当当旗舰店
- 机械工业出版社当当自营旗舰店
《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利博文目录,点击查看
1.Node-API的组成架构
Node-API的组成架构如下图所示。其中
- Native Module:开发者使用Node-API开发的模块,用于在ArkTS侧导入使用。
- Node-API:实现ArkTS与C/C++交互的逻辑。
- ModuleManager:Native模块管理,包括加载、查找等。
- ScopeManager:管理napi_value的生命周期。
- ReferenceManager:管理napi_ref的生命周期。
- NativeEngine:ArkTS引擎抽象层,统一ArkTS引擎在Node-API层的接口行为。
- ArkCompiler ArkTS Runtime:ArkTS运行时。
2.Node-API的关键交互流程
Node-API的关键交互流程,如下图所示
ArkTS和C++之间的交互流程,主要分为以下两步:
- 初始化阶段:当ArkTS侧在import一个Native模块时,ArkTS引擎会调用ModuleManager加载模块对应的so及其依赖。首次加载时会触发模块的注册,将模块定义的方法属性挂载到exports对象上并返回该对象。
- 调用阶段:当ArkTS侧通过上述import返回的对象调用方法时,ArkTS引擎会找到并调用对应的C/C++方法。
3.总结
本文介绍了HarmonyOS系统中Node-API的架构与应用。Node-API作为ArkTS/JS与C/C++交互的桥梁,适用于游戏、物理模拟等高性能场景。其架构包含NativeModule、ModuleManager等组件,通过模块注册机制实现能力互通。交互流程分为初始化阶段加载模块和调用阶段执行方法两个步骤。开发者既可利用系统框架层功能,也能封装核心C/C++模块提升性能。本文是《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》书籍第14章的延伸内容,为读者提供技术参考和面试学习资料。
对本书感兴趣的同学可以点击以下链接进行购买,及参加 我的班级(华为官方)共同学习
- 机械工业出版社官方京东旗舰店
- 机械工业出版社京东自营旗舰店
- 机械工业出版社官方当当旗舰店
- 机械工业出版社当当自营旗舰店