protobuf.js是一个纯JavaScript实现,支持Node.js和浏览器的TypeScript,它容易使用速度快速,可以直接反射.proto文件,不需要生成任何文件。
protobuf.js是基于ByteBuffer.js的Protocol Buffers纯JavaScript实现,主要功能是解析.proto文件,构建Message类,编码解码。
一、安装
首先下载 node.js(包含npm)
1.初始化package.json文件
npm init
在项目根目录使用npm init命令,一路回车,将在当前目录创建package.json文件用于nodejs三方模块的管理。
2. protobufjs模块
查看候选版本
$ npm view protobufjs versions
1⃣️安装protobufjs到项目
npm install protobufjs --save
2⃣️安装protobufjs到全局
npm install -g protobufjs
主要是方便使用protobufjs提供的pbjs命令行工具。pbjs可以将proto原文件转换成json、js等,以提供不同的加载proto的方式。
全局就方便任意地方调用,本地方便代码require。
protobuf.js 依赖 long.js、bytebuffer.js(也可通过npm安装)
二、插件方式导入
找到js文件node_modules/bytebuffer/dist/bytebuffer.js,导入工程并设置为插件,protobuf 会被导入成全局变量。
三、转换
1.使用 pbjs 将所有 proto 文件转换为 js
pbjs -t static-module -w commonjs -o proto.js *.proto
采用插件方式,protobuf会被自动导入,require方式已经无效,需要修改生成的proto.js文件.
//var $protobuf = require("protobufjs/minimal");
var $protobuf = protobuf;
2.使用 pbjs 将 js 文件转换为 dts 文件
pbts -o proto.d.ts proto.js
参考:https://www.jianshu.com/p/da48fb06b29f