|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | - | - |
| docs/ | | 07-Sep-2024 | - | 2,274 | 1,598 |
| examples/ | | 07-Sep-2024 | - | 67,831 | 57,478 |
| figures/ | | 07-Sep-2024 | - | | |
| hdc/ | | 07-Sep-2024 | - | 25,949 | 18,817 |
| napi_IntelliJ_plugin/ | | 07-Sep-2024 | - | 4,580 | 2,933 |
| napi_vs_plugin/ | | 07-Sep-2024 | - | 2,140 | 1,744 |
| release-notes/ | | 07-Sep-2024 | - | 322 | 280 |
| src/ | | 07-Sep-2024 | - | 10,758 | 9,106 |
| test/ | | 07-Sep-2024 | - | 8,350 | 5,672 |
| .clang-format | D | 07-Sep-2024 | 3.1 KiB | 111 | 111 |
| .gitattributes | D | 07-Sep-2024 | 533 | 8 | 7 |
| .gitignore | D | 07-Sep-2024 | 572 | 29 | 28 |
| FAQ.md | D | 07-Sep-2024 | 9.8 KiB | 158 | 101 |
| LICENSE | D | 07-Sep-2024 | 11.3 KiB | 202 | 169 |
| OAT.xml | D | 07-Sep-2024 | 5.2 KiB | 80 | 27 |
| README_zh.md | D | 07-Sep-2024 | 6.2 KiB | 149 | 95 |
| package.json | D | 07-Sep-2024 | 1.3 KiB | 37 | 36 |
README_zh.md
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/docs/INSTRUCTION_ZH.md)
9
10## 目录
11
12 ├── napi_generator # NAPI框架代码生成工具
13 │ ├── docs # 工具说明、版本规划
14 │ ├── examples # 工具需要的文件样例
15 │ ├── figures # 图片资源文件
16 │ ├── hdc # hdc相关工具
17 │ ├── napi_IntelliJ_plugin # Intellij IDEA插件代码
18 │ ├── napi_vs_plugin # VS Code插件代码
19 │ ├── release-notes # 发布说明
20 │ ├── src # 工具源码
21 │ │ ├── gen # napi工具源码
22 │ │ | ├── analyze # 解析器
23 │ │ | |── extend # 扩展模块,包括gn文件生成、linux环境适配代码等
24 │ │ | |── generate # 生成器
25 │ │ | └── tools # 公共模块代码,包括消息体校验、文件读写、正则表达式转换等
26 │ │ ├── tsGen # TS工具源码
27 │ ├── test # UT、ST测试
28 │ ├── FAQ # NAPI框架工具问题反馈
29 │ └── README # 工具使用指导
30
31## 约束
32系统:建议Ubuntu 20.04或者Windows 10
33
34依赖版本:VS Code 1.62.0
35
36## 使用方法
37
38### 使用对象
39
40系统开发者
41
42### 使用场景
43
441) 系统框架层新增子系统,需对应用层提供接口。
452) 系统框架层子系统能力增强后,需对应用层提供新接口。
46
47### 工具使用
48
49工具有三种类型,分别是可执行文件、VS Code插件、DevEco Studio上使用的IntelliJ插件。其中的可执行文件可根据工具使用者的开发环境选择,支持Windows,Linux和Mac。可执行文件下载路径如下(由于网络原因,可能会导致有的下载链接失效,因此提供了以下三个下载链接):
50
51[可执行文件下载链接1](http://ftpkaihongdigi.i234.me:5000/sharing/yaRiKSjBI)
52
53[可执行文件下载链接2](http://ftp.kaihong.com:5000/fsdownload/yaRiKSjBI/)
54
55[可执行文件下载链接3](http://ftp.kaihongdigi.com:5000/fsdownload/yaRiKSjBI/)
56
57访问密码:kaihong
58
59压缩包解压密码:kaihong20231121
60
61DevEco Studio上使用的IntelliJ插件下载路径如下:
62
63[DevEco Studio上使用的IntelliJ插件下载链接](https://plugins.jetbrains.com/plugin/19593-napi-generator/versions)
64
65具体的工具使用步骤,可以左键单击以下链接了解:
66
67[工具使用说明](https://gitee.com/openharmony/napi_generator/blob/master/docs/INSTRUCTION_ZH.md)
68
69### 工具输出
70
71根据使用者指定的typescript文件,工具会输出NAPI框架代码、业务代码框架、GN脚本等文件。
72
73为了方便使用者快速上手工具,可供测试的typescript文件存放在以下路径:
74
75```
76napi_generator/examples/ts
77```
78
79在window环境下的,根据输入文件@ohos.napitest.d.ts和basic.d.ts生成的输出文件,如下所示:
80
81![](./figures/pic-d-ts-transition.png)
82
83其中生成的"napitest.h"文件,定义了框架代码的接口,生成的部分接口如下所示:
84
85```
86...
87class NodeISayHello {
88public:
89 bool addSayHelloListener(NodeISayHelloListener& listener);
90 static NodeISayHelloListener listener_;
91 bool removeSayHelloListener(NodeISayHelloListener& listener);
92 bool registerCallbackfunc();
93 // 供业务调用的回调接口
94 void CallbackfuncCallback(NUMBER_TYPE_2& wid);
95
96 bool unRegisterCallbackfunc();
97 bool sayHello(std::string& from, std::string& to, NUMBER_TYPE_9& sayType);
98 bool sayHi(std::string& from, std::string& to, NUMBER_TYPE_10& sayType);
99 bool sayHelloWithResponse(std::string& from, std::string& to, NUMBER_TYPE_11& sayType, uint32_t& outErrCode, AUTO_INTERFACE_5& out);
100 static AUTO_INTERFACE_5 auto_interface_5OutRes;
101 void auto_interface_5SetCbValue(NUMBER_TYPE_6 result, std::string errMsg, std::string response);
102};
103...
104```
105
106### 代码集成
107
108为了实现工具生成的接口被其他子系统或者应用调用,需将生成的代码编译集成到OpenHarmony系统中,编译生成动态库。
109
110把工具的生成代码集成到OpenHarmony的具体操作步骤,可以左键单击以下链接了解:
111
112[生成代码集成到OpenHarmony的方法](https://gitee.com/openharmony/napi_generator/blob/master/docs/ENSEMBLE_METHOD_ZH.md)
113
114## 工具开发说明
115
116### 对象
117
118工具的开发者
119
120### 开发场景
121
122若当前工具的功能已经不能满足开发者的全部需求,则开发者可以基于已有的源码对工具进行二次开发,来增强工具的能力,编译打包生成自定义的可执行文件和插件。
123
124### 开发步骤
125
126开发者可以根据如下的步骤来完成对工具的开发:
127
128 [工具开发说明](https://gitee.com/openharmony/napi_generator/blob/master/docs/DEVELOP_ZH.md)
129
130## 版本说明
131
132 当前版本已支持的特性和待开发的特性,如下所示:
133
134 [已支持特性](https://gitee.com/openharmony/napi_generator/blob/master/release-notes)
135
136 [待支持特性](https://gitee.com/openharmony/napi_generator/blob/master/docs/ROADMAP_ZH.md)
137
138## FAQ
139对于常见问题解决方法指导如下:
140
141 [FAQ](https://gitee.com/openharmony/napi_generator/blob/master/FAQ.md)
142
143## 参与贡献
144
145暂无
146
147## 相关仓
148
149[ts生成工具README_zh](https://gitee.com/openharmony/napi_generator/blob/master/docs/ts/README_ZH.md)