0.0.22 • Published 5 years ago
interpret-dubbo2js.ruigu v0.0.22
Translator
dubbo2.js 打通了 node 与 dubbo 服务调用的 rpc 通道
调用 dubbo 接口时, 如果能自动生成接口定义,参数的转换,代码提示 开发体验会更优秀;
"Translator(翻译师)" 为此而生!!
职责
- 翻译 Interface 代码,生成 node 端可调用代码;
- 自动将参数转换为 hessian.js 能识别的对象;
- 接口方法及参数类型提示;
TODO
- 接口注释信息未同步;
- mvn 打包插件;
How to Usage?
如何把一个 dubbo 接口转换为 node 客户端能调用的代码,并在项目中使用呢?我们分为 3 个步骤:
- 在 java 接口项目生成 jar 包及依赖文件;
- 从生成的 jar 字节码中提取 ast 信息,翻译师根据 ast 信息生成 typescript;
- 项目中调用生成代码;
注:
具体实现 参考文档 dubbo2js-翻译师.pdf
step1:从 java 项目生成 jar
; 进入接口项目目录执行命令
mvn package
mvn install dependency:copy-dependencies
step2:翻译生成 typescript 代码
npm install interpret-dubbo2js -g
interpret -c dubbo.json
dubbo.json:
{
"output": "./src",
"entry": "com.qianmi",
"entryJarPath": "${jarPath}",
"libDirPath": "${denpendJarDir}"
}
参数名称 | 作用 |
---|---|
output | 生成代码保存路径 |
entry | 可选过滤无关代码 |
entryJarPath | 接口的 jar 包 |
libDirPath | 接口所依赖的 |
Tip 生成的代码可以发 npm 包供其他业务线使用或直接在项目中引用
step2:Use the provider
import {ShowCaseProvider} from '@qianmi/***-api/lib/com/qianmi/ShowCaseProvider';
const dubbo = new Dubbo({
application: {name: 'd2p-visitor-bff'},
dubboInvokeTimeout: 10,
//zookeeper address
register: app.config.zookeeper,
dubboVersion: '2.4.13',
logger: app.logger as ILogger,
interfaces: [
'com.qianmi.cloudshop.api.marketing.d2p.D2pMarketingQueryProvider',
],
});
let showCaseProvider = ShowCaseProvider(dubbo);
showCaseProvider.show();
Tip npm install interpret-util dubbo2.js
;
0.0.22
5 years ago