微信小程序可用的Protobuf(含demo)
=====================
**Protobuf:**
一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域;
**微信小程序:**
基于微信平台的小程序
***此库意义:***
在微信小程序中Function 和 eval 相关的动态执行代码方式都给屏蔽了,以致google官方Protobuf不能正常使用;针对以上问题,修改了dcodeIO 的protobuf.js部分实现方式,以致微信小程序中运行protobuf.js。
安装以及使用
---------
* 1、首先下载本代码,将其中weichatPb文件夹加入到你的小程序项目中
* 2、安装pbjs工具
* 基于node.js,首先安装protobufjs
```
$ npm install -g protobufjs
```
会出现
```
/usr/local/lib
└─┬ protobufjs@6.8.6
├── @protobufjs/aspromise@1.1.2
├── @protobufjs/base64@1.1.2
├── @protobufjs/codegen@2.0.4
├── @protobufjs/eventemitter@1.1.0
├── @protobufjs/fetch@1.1.0
├── @protobufjs/float@1.0.2
├── @protobufjs/inquire@1.1.0
├── @protobufjs/path@1.1.2
├── @protobufjs/pool@1.1.0
├── @protobufjs/utf8@1.1.0
├── @types/long@3.0.32
├── @types/node@8.9.5
└── long@4.0.0
```
证明安装成功
* 接着安装 pbjs需要的库 命令行执行下“pbjs”就ok
```
$ pbjs
```
会出现
```
-t, --target Specifies the target format. Also accepts a path to require a custom target.
json JSON representation
json-module JSON representation as a module
proto2 Protocol Buffers, Version 2
proto3 Protocol Buffers, Version 3
static Static code without reflection (non-functional on its own)
static-module Static code without reflection as a module
-p, --path Adds a directory to the include path.
-o, --out Saves to a file instead of writing to stdout.
--sparse Exports only those types referenced from a main file (experimental).
Module targets only:
-w, --wrap Specifies the wrapper to use. Also accepts a path to require a custom wrapper.
default Default wrapper supporting both CommonJS and AMD
commonjs CommonJS wrapper
amd AMD wrapper
es6 ES6 wrapper (implies --es6)
closure A closure adding to protobuf.roots where protobuf is a global
--dependency Specifies which version of protobuf to require. Accepts any valid module id
-r, --root Specifies an alternative protobuf.roots name.
-l, --lint Linter configuration. Defaults to protobuf.js-compatible rules:
eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins
--es6 Enables ES6 syntax (const/let instead of var)
Proto sources only:
--keep-case Keeps field casing instead of converting to camel case.
Static targets only:
--no-create Does not generate create functions used for reflection compatibility.
--no-encode Does not generate encode functions.
--no-decode Does not generate decode functions.
--no-verify Does not generate verify functions.
--no-convert Does not generate convert functions like from/toObject
--no-delimited Does not generate delimited encode/decode functions.
--no-beautify Does not beautify generated code.
--no-comments Does not output any JSDoc comments.
--force-long Enfores the use of 'Long' for s-/u-/int64 and s-/fixed64 fields.
--force-number Enfores the use of 'number' for s-/u-/int64 and s-/fixed64 fields.
--force-message Enfores the use of message instances instead of plain objects.
```
证明安装成功
* 3、接下来我们使用pbjs 转换一下.proto文件
* 我们先准备一份awesome.proto文件,内容如下
```
// awesome.proto
syntax = "proto3";
message AwesomeMessage {
string awesome_field = 1; // becomes awesomeField
}
```
* 接下来我们来转换awesome.proto文件
```
$ pbjs -t json awesome.proto > awesome.json
```
* 这时我们会得到一个awesome.json文件,内容如下
```json
{
"nested": {
"AwesomeMessage": {
"fields": {
"awesomeField": {
"type": "string",
"id": 1
}
}
}
}
}
```
* 但此时的json文件我们不能直接使用,不过我们可以将json对象取出放到小程序项目当中去,比如在小程序项目中新建一个awesome.js,内容为
```js
module.exports = {
"nested": {
"AwesomeMessage": {
"fields": {
"awesomeField": {
"type": "string",
"id": 1
}
}
}
}
};
```
* 4、此时总算到我们使用该文件的时候了,我们在项目中新建一个js文件(需要在项目中require该文件),其内容如下
```js
var protobuf = require('../weichatPb/protobuf.js'); //引入protobuf模块
var awesomeConfig = require('./awesome.js');//加载awesome.proto对应的json
var AwesomeMessage = AwesomeRoot.lookupType("AwesomeMessage");//这就是我们的Message类
var payload = {awesomeField: "我是test1"};
var message = AwesomeMessage.create(payload);
var buffer = AwesomeMessage.encode(message).finish();
console.log("buffer", buffer);
var deMessage = AwesomeMessage.decode(buffer);
console.log("deMessage", deMessage);
```
结语
----
附件中有我的测试demo小程序编辑器打开后,直接在控制台就可以看到我的测试过程,测试代码在testProtocoBuffer.js中。
如果您对于该工具库有更好的提升欢迎提出,如果您在使用中发现bug或者有疑惑也可以反馈,我都会解答的 (*^__^*) 嘻嘻……
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
用于微信小程序的ProtoBuffer库.zip (92个子文件)
protoBufferForWechat-master
test.proto 7KB
weichatPb
src
method.js 5KB
parse.js 21KB
enum.js 5KB
root.js 14KB
types.js 5KB
type.js 19KB
utf8.js 3KB
path.js 2KB
common.js 9KB
base64.js 4KB
longBits.js 4KB
field.js 11KB
rpc
service.js 5KB
long.js 38KB
message.js 4KB
tokenize.js 12KB
service.js 5KB
EventEmitter.js 2KB
object.js 5KB
util.js 8KB
roots.js 68B
float.js 11KB
writer.js 12KB
namespace.js 15KB
wrappers.js 2KB
inquire.js 880B
reader.js 9KB
asPromise.js 2KB
mapField.js 4KB
converter.js 14KB
decoder.js 4KB
encoder.js 4KB
oneof.js 6KB
pool.js 1KB
verifier.js 5KB
protobuf.js 4KB
demo
wxProtocoBuffer
pages
index
index.wxml 580B
index.js 1KB
index.wxss 268B
logs
logs.json 52B
logs.js 261B
logs.wxml 173B
logs.wxss 106B
weichatPb
src
method.js 5KB
parse.js 21KB
enum.js 5KB
root.js 14KB
types.js 5KB
type.js 19KB
utf8.js 3KB
path.js 2KB
common.js 9KB
base64.js 4KB
longBits.js 4KB
field.js 11KB
rpc
service.js 5KB
long.js 38KB
message.js 4KB
tokenize.js 12KB
service.js 5KB
EventEmitter.js 2KB
object.js 5KB
util.js 8KB
roots.js 68B
float.js 11KB
writer.js 12KB
namespace.js 15KB
wrappers.js 2KB
inquire.js 880B
reader.js 9KB
asPromise.js 2KB
mapField.js 4KB
converter.js 14KB
decoder.js 4KB
encoder.js 4KB
oneof.js 6KB
pool.js 1KB
verifier.js 5KB
protobuf.js 4KB
app.json 241B
project.config.json 461B
app.js 1KB
utils
util.js 472B
app.wxss 194B
testPb
awesome.js 283B
testProto.js 64KB
testProtocoBuffer.js 9KB
awesome.proto 117B
.gitignore 280B
README.md 6KB
针对微信小程序使用的protoBuffer库_protoBufferForWechat
项目内附说明
如果解压失败请用ara软件解压.txt 42B
共 92 条
- 1
资源评论
2401_89451588
- 粉丝: 122
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- matlab平台的垃圾识别定位.zip
- matlab平台的疲劳检测GUI设计.zip
- matlab平台的垃圾分类系统.zip
- matlab平台的苹果水果分级.zip
- matlab平台的漂浮物识别.zip
- matlab平台的疲劳专注度检测系统.zip
- matlab平台的脐橙水果分级.zip
- 连续小波变换加卷积神经网络进行轴承故障诊断
- matlab平台的人脸考勤设计.zip
- matlab平台的人脸购物系统.zip
- matlab平台的人脸识别.zip
- matlab平台的人脸识别系统.zip
- matlab平台的人脸门禁系统.zip
- matlab平台的手势识别设计.zip
- matlab平台的手势控制系统.zip
- matlab平台的手势识别.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功