0.0.22 • Published 5 years ago

interpret-dubbo2js.pd v0.0.22

Weekly downloads
1
License
Apache Licence 2....
Repository
github
Last release
5 years ago

Translator

dubbo2.js 打通了 node 与 dubbo 服务调用的 rpc 通道

调用 dubbo 接口时, 如果能自动生成接口定义,参数的转换,代码提示 开发体验会更优秀;

"Translator(翻译师)" 为此而生!!

职责

  1. 翻译 Interface 代码,生成 node 端可调用代码;
  2. 自动将参数转换为 hessian.js 能识别的对象;
  3. 接口方法及参数类型提示;

TODO

  • 接口注释信息未同步;
  • mvn 打包插件;

How to Usage?

如何把一个 dubbo 接口转换为 node 客户端能调用的代码,并在项目中使用呢?我们分为 3 个步骤:

  1. 在 java 接口项目生成 jar 包及依赖文件;
  2. 从生成的 jar 字节码中提取 ast 信息,翻译师根据 ast 信息生成 typescript;
  3. 项目中调用生成代码;

注:

具体实现 参考文档 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;

interpret-example;