@agile-dev/wx-protobuf
Version:
微信小程序使用的 protobuf 协议开发工具
124 lines (93 loc) • 2.47 kB
Markdown
# wx-protobuf
微信小程序使用的 protobuf 协议开发工具
## 使用教程
* 全局安装 `protobufjs` 对`.proto`文件进行转换成`json`
``` cmd
$ npm install -g protobufjs
```
* 检测是否安装成功
``` cmd
$ pbjs
```
* 先创建一个 `test.proto` 文件
``` proto
// awesome.proto
syntax = "proto3";
message Test {
number userId = 1;
staring userName = 2;
}
```
* 接下来我们来转换 `test.proto` 文件;
``` cmd
$ pbjs -t json test.proto > test.json
```
* 这时我们就会得到一个 test.json 文件
``` json
{
"nested": {
"Test": {
"fields": {
"userId": {
"type": "number",
"id": 1
},
"userName": {
"type": "string",
"id": 2
}
}
}
}
}
```
* 由于Json 文件不能直接在微信小程序内使用,所以我们需要用js把协议配置导出来
``` js
export default {
"nested": {
"Test": {
"fields": {
"userId": {
"type": "number",
"id": 1
},
"userName": {
"type": "string",
"id": 2
}
}
}
}
}
```
* 直接下载全部文件到你的微信制定的目录地址中,然后使用SE6语法
``` js
import wxProtobuf from '你放置的地址/wxProtobuf/index'
```
## 初始化 wxProtobuf 程序
由于使用的是单例模式,所以不要多次初始化,初始化后的配置全局获取到的都是同一个实例.
``` js
import wxProtobuf from '你放置的地址/wxProtobuf/index';
import textRoot from '你放置的地址/test.json';
wxProtobuf.init({
roots:{ // roots 的 key 会变成 存在 this._rootArray 里 的 key
textRoot: textRoot,
...
}
})
// 如果在init 的时候 传入了 root ,就会自动 执行 root.lookupType 这个方法 挂载 json 文件内的所有的 message
```
## 加密
``` js
import wxProtobuf from '你放置的地址/wxProtobuf/index';
const buffer = wxProtobuf.encode('Test',{userId:1,userName:'user'});
console.log(buffer) // 这个就是我们要传给后台的 二进制流
```
## 解密
``` js
import wxProtobuf from '你放置的地址/wxProtobuf/index';
const buffer = wxProtobuf.encode('Test',{userId:1,userName:'user'});
console.log(buffer) // 这个就是我们要传给后台的 二进制流
const loginData = wxProtobuf.decode('Test',buffer);
console.log(loginData) // 这个就是 讲 二进制 转换成 可以用的 obj 数据
```