1# NAPI框架生成工具 2 3## 简介 4本文主要介绍NAPI框架代码生成工具,它可以根据用户指定路径下的ts(typescript)接口文件一键生成NAPI框架代码、业务代码框架、GN文件等。在开发JS应用与NAPI间接口时,底层框架开发者无需关注Nodejs语法、C++与JS之间的数据类型转换等上层应用转换逻辑,只关注底层业务逻辑即可,专业的人做专业的事,从而可以大大提高开发效率。目前工具支持可执行文件、VS Code插件、DevEco Studio上使用的IntelliJ插件三种入口。 5 6更多工具的架构和实现原理详情,可以左键单击以下链接了解: 7 8[工具使用说明](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/docs/usage/INSTRUCTION_ZH.md) 9 10## 目录 11 12 ├── napi_generator # 工具集 13 │ ├── ... # 其它文件 14 │ ├── src 15 │ │ ├── ... 16 │ │ ├── cml 17 │ │ | ├── ... # 其它工具 18 │ │ | ├── dts2cpp 19 │ │ | | ├── src/gen # napi工具源码 20 │ │ | | | ├── analyze # 解析器 21 │ │ | | | |── extend # 扩展模块,包括gn文件生成、linux环境适配代码等 22 │ │ | | | |── generate # 生成器 23 │ │ | | | └── tools # 公共模块代码,包括消息体校验、文件读写、正则表达式转换等 24 │ │ | │ └── README # 工具使用指导 25 26## 约束 27系统:建议Ubuntu 20.04或者Windows 10 28 29依赖版本:VS Code 1.62.0 30 31## 使用方法 32 33### 使用对象 34 35系统开发者 36 37### 使用场景 38 391) 系统框架层新增子系统,需对应用层提供接口。 402) 系统框架层子系统能力增强后,需对应用层提供新接口。 41 42### 工具使用 43 44工具有三种类型,分别是可执行文件、VS Code插件、DevEco Studio上使用的IntelliJ插件。其中的可执行文件可根据工具使用者的开发环境选择,支持Windows,Linux和Mac。可执行文件下载路径如下(由于网络原因,可能会导致有的下载链接失效,因此提供了以下三个下载链接): 45 46[可执行文件下载链接1](http://ftpkaihongdigi.i234.me:5000/sharing/yaRiKSjBI) 47 48[可执行文件下载链接2](http://ftp.kaihong.com:5000/fsdownload/yaRiKSjBI/) 49 50[可执行文件下载链接3](http://ftp.kaihongdigi.com:5000/fsdownload/yaRiKSjBI/) 51 52访问密码:kaihong 53 54压缩包解压密码:kaihong20231121 55 56DevEco Studio上使用的IntelliJ插件下载路径如下: 57 58[DevEco Studio上使用的IntelliJ插件下载链接](https://plugins.jetbrains.com/plugin/19593-napi-generator/versions) 59 60具体的工具使用步骤,可以左键单击以下链接了解: 61 62[工具使用说明](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/docs/usage/INSTRUCTION_ZH.md) 63 64### 工具输出 65 66根据使用者指定的typescript文件,工具会输出NAPI框架代码、业务代码框架、GN脚本等文件。 67 68为了方便使用者快速上手工具,可供测试的typescript文件存放在以下路径: 69 70``` 71napi_generator/examples/ts 72``` 73 74在window环境下的,根据输入文件@ohos.napitest.d.ts和basic.d.ts生成的输出文件,如下所示: 75 76 77 78其中生成的"napitest.h"文件,定义了框架代码的接口,生成的部分接口如下所示: 79 80``` 81... 82class NodeISayHello { 83public: 84 bool addSayHelloListener(NodeISayHelloListener& listener); 85 static NodeISayHelloListener listener_; 86 bool removeSayHelloListener(NodeISayHelloListener& listener); 87 bool registerCallbackfunc(); 88 // 供业务调用的回调接口 89 void CallbackfuncCallback(NUMBER_TYPE_2& wid); 90 91 bool unRegisterCallbackfunc(); 92 bool sayHello(std::string& from, std::string& to, NUMBER_TYPE_9& sayType); 93 bool sayHi(std::string& from, std::string& to, NUMBER_TYPE_10& sayType); 94 bool sayHelloWithResponse(std::string& from, std::string& to, NUMBER_TYPE_11& sayType, uint32_t& outErrCode, AUTO_INTERFACE_5& out); 95 static AUTO_INTERFACE_5 auto_interface_5OutRes; 96 void auto_interface_5SetCbValue(NUMBER_TYPE_6 result, std::string errMsg, std::string response); 97}; 98... 99``` 100 101### 代码集成 102 103为了实现工具生成的接口被其它子系统或者应用调用,需将生成的代码编译集成到OpenHarmony系统中,编译生成动态库。 104 105把工具的生成代码集成到OpenHarmony的具体操作步骤,可以左键单击以下链接了解: 106 107[生成代码集成到OpenHarmony的方法](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/docs/usage/ENSEMBLE_METHOD_ZH.md) 108 109## 工具开发说明 110 111### 对象 112 113工具的开发者 114 115### 开发场景 116 117若当前工具的功能已经不能满足开发者的全部需求,则开发者可以基于已有的源码对工具进行二次开发,来增强工具的能力,编译打包生成自定义的可执行文件和插件。 118 119### 开发步骤 120 121开发者可以根据如下的步骤来完成对工具的开发: 122 123 [工具开发说明](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/docs/guide/DEVELOP_ZH.md) 124 125## 版本说明 126 127 当前版本已支持的特性和待开发的特性,如下所示: 128 129 [已支持特性](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/docs/release-notes) 130 131 [待支持特性](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/docs/requirement/ROADMAP_ZH.md) 132 133## FAQ 134对于常见问题解决方法指导如下: 135 136 [FAQ](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/dts2cpp/docs/guide/FAQ.md) 137 138## 参与贡献 139 140暂无 141 142## 相关仓 143 144[ts生成工具README_zh](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/h2dts/README_ZH.md)