javascript前端如何使用google-protobuf

最近google的protobuf3出来了,抽空看了下,对JavaScript的支持也还是蛮不错的。pb在各行业都还是挺有用的,在数据存储和消息通讯上都是很不错的选择,不论是从效率和占用内存带宽大小上,都有很大的优势,至于什么优势那就不在这里介绍了,感兴趣的同学可以去自己查阅下资料,pb和jason还有各种数据的优缺点,此处不做评价。

那么回到标题,在google推出了3.40的protobuf以后对javascript有了很好的支持,可以不用在用别的库了,但是仔细阅读github上的说明,确实太草率了,很多地方都不是很清晰,对于刚入门或者跨行的同学确实有点摸不着头。

那么接下来我把如何使用的方法给大家简单介绍下:

        1.要知道google提供的protobuf主要是针对Node.js来使用的。

2.我们要做的就是把Node使用的库转换成前端可使用的库文件来使用。

  • 听到这里有一部分老手可能已经知道怎么做了,好了不卖关子了,接下来一步一步的教大家去处理。

1.首先下载google的protobuf的compiler,通过编译器可以将.proto文件转换为想要的语言文件。
2.按照示例写一个proto文件
[plain]  view plain  copy
  1. syntax = "proto3";  
  2.     package mypackage;  
  3.     message myMessage {  
  4.         int32 my_value =  1;  
  5.     }  



 文件名保存为myproto.proto, 然后用编译器对其进行编译
protoc.exe --js_out=import_style=commonjs,binary:. myproto.proto
完成后会生成一个myproto_pb.js的文件,这里面就是protobuf的API和一些函数。

3.如果是Node的话就可以引入使用了,不过前端用的话还需要做一些处理。
下载Node.js进行安装,因为要使用到Node安装包里的npm,使用npm安装会方便很多。

4.安装好npm以后,安装需要的库:
npm install -g require(对库文件的引用库)
npm install -g browserify(这个是用来打包成前端使用的js文件)
最后我们执行
npm install google-protobuf
会在当前目录下生成一个文件夹,里面装的就是protobuf的库文件。

5.都装还以后,只需要再写一个导出文件用browserify执行打包即可
[javascript]  view plain  copy
  1. var myProto = require('./myproto_pb');  
  2.   
  3.     module.exports = {  
  4.         DataProto: myProto  
  5.     }  
保存为exports.js。

6.对文件进行编译打包
执行命令 
browserify exports.js > bundle.js
然后会生成一个bundle.js文件。

7.这时候大家就可以畅快的使用了

[html]  view plain  copy
  1. <html>  
  2.     <head>  
  3.         <script type="text/javascript" src="./bundle.js"></script>  
  4.     </head>  
  5.   
  6.     <body>  
  7.   
  8.         <button onclick="">1111</button>  
  9.         <script>  
  10.        <span style="white-space:pre">   </span> <span style="white-space:pre">  </span>var message = new proto.mypackage.myMessage();  
  11.    <span style="white-space:pre">       </span>message.setMyValue(20);  
  12. <span style="white-space:pre">      </span>var bytes = message.serializeBinary();  
  13. <span style="white-space:pre">      </span>console.log(bytes);  
  14.   
  15. <span style="white-space:pre">      </span>var data = proto.mypackage.myMessage.deserializeBinary(bytes);  
  16. <span style="white-space:pre">      </span>console.log(data);  
  17. <span style="white-space:pre">      </span>console.log(data.getMyValue());  
  18.         </script>  
  19.     </body>  
  20. </html>  

这样大家就可以和平时的js调用一样使用了,如果再加上websocket,那就更爽了!!!
就先介绍到这里,大家有兴趣可以留言讨论,如要转载请注明出处!谢谢配合!
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值