我们坚定的认为开发体验同用户的体验同等重要,我们做了一些创新,一些很酷的实践。
为了使 node 和 dubbo 之间的调用像 java 调用 dubbo 一样简单透明,我们设计和实现了 translator.
通过分析 java 的 jar 包中的 bytecode 提取 dubbo 调用的接口信息,自动生成 typescript 类型定义文件以及调用的代码。
在 packages/dubbo/src/tests/provider 就是根据 java 目录下的 demo 翻译而来。
我们希望整个 dubbo 调用的代码都可以无缝生成。
职责
如何把一个 dubbo 接口转换为 node 客户端能调用的代码,并在项目中使用呢?我们分为 3 个步骤:
注:
具体实现 参考文档 dubbo2js-翻译师.pdf
; 进入接口项目目录执行命令 mvn package mvn install dependency:copy-dependencies
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 包供其他业务线使用或直接在项目中引用
import {ShowCaseProvider} from '@qianmi/***-api/lib/com/qianmi/ShowCaseProvider'; const service = { ShowCaseProvider, }; const dubbo = new Dubbo({ application: {name: 'node-dubbo'}, register: app.config.zookeeper, service, }); //main method (async () => { //so easy await dubbo.service.ShowCaseProvider.show(); })(); `` **_Tip_** `npm install interpret-util apache-dubbo-js`; [interpret-example](https://github.com/creasy2010/interpret-example);