javascript(js)使用protobuf
安装proto编译器
参考:http://www.jiajiajia.club/blog/artical/351psy9r6l0g/464
编写.proto文件
syntax = "proto3";
message DogInfo{
string name = 1;
int32 age = 2;
}
编译生成访问类文件:
命令:protoc --js_out=import_style=commonjs,binary:. Dog.proto
当前目录会生成Dog_pb.js
打包为web可用的js文件
前置条件:需要安装npm。npm一般在安装nodejs的时候就会自动安装。
安装库文件的引用库
npm install -g require
安装打包成前端使用的js文件
npm install -g browserify
安装protobuf的库文件
npm install google-protobuf
编写打包js文件dog_export.js
var dog = require('./Dog_pb');
module.exports = {
DataProto: dog
}
执行完安装命令后会自动生成node_modules文件夹和package-lock.json文件。
编译生成可直接使用的js文件
命令:browserify dog_export.js -o dog_main.js
文件夹中产生一个可直接使用的dog_main.js
Api
普通类型字段(required/optional)
- get{FIELD}() // return field value
- set{FIELD}(value) // set field value to value
- clear{FIELD}(value) // clear filed value
数组类型字段操作(repeated)
- add{FIELD}(value) // add one value to field
- clear{FIELD}List() // clear filed
- get{FIELD}List() // return array of field values
- setInterestList(array)// set array
序列化/反序列化
- serializeBinary() // 序列化
- deserializeBinary(bin) // 反序列化(静态方法)
调试
- toObject() // 打印数据
代码中使用
<html>
<head>
<script type="text/javascript" src="./dog_main.js"></script>
</head>
<body>
protobuf for js
</body>
<script type="text/javascript">
var dog = new proto.DogInfo();
dog.setName("京巴");
dog.setAge(12);
console.log(dog.toObject());
</script>
</html>
注意创建对象的时候是DogInfo,不是Dog,因为我们在proto文件中定义的message的name是DogInfo。
评论区
请写下您的评论...
猜你喜欢
算法基础
1459
一、什么是protobuf?在移动互联网时代,手机流量、电量是最为有限的资源,而移动端的即时通讯应用无疑必须得直面这两点。解决流量过大的基本方法就是使用高度压缩的通信协议,而数据压缩后流量减小带来的
file
git & github学习使用笔记
分布式项目管理工具
1220
git&github学习使用笔记
blog
linux nohup命令使用
linux系统
2576
linuxnohup命令使用nohup是nohangup的简写,意为不挂断的意思。用途:不挂断地运行命令语法:nohupCommand[Arg…][ &]描述:nohup命令运行由
blog
layui使用案例
前端(h5)
2006
!DOCTYPEhtmlhtmlheadmetacharset="utf-8"metatitlelayui/titlemetaname="renderer"content="webkit"metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"metaname="viewport"content="width=device-width,i
java基础
3620
使用wait和notify的条件wait()与notify/notifyAll方法必须在同步代码块中使用,如果不是在同步方法或同步代码块中使用则会报异常Exceptioninthread"main
blog
maven项目使用tomcat7插件
框架
1836
maven项目使用tomcat7插件1.pom文件build finalNamedz/finalName plugins plugin
工具
1829
上一篇:eclipse中使用Git管理项目工程代码(3)将远程库的工程克隆到本地应用情形1.员工a在master主分支上新建一个newBranch分支,然后开始在newBranch分支上开始编写代码
weblog
1273
java使用easypoi批量导入excel实体类:importcn.afterturn.easypoi.excel.annotation.Excel
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。