推薦前端網址:http://keenwon.com/html
在Javascript裏比較常見的數據格式就是json,xml,可是這兩種格式在數據傳輸方面有明顯不足。而Protocol Buffers能夠很好的解決這個問題,下面引用百科的對Protocol Buffers的定義:前端
Protocol Buffers是Google公司開發的一種數據描述語言,相似於XML可以將結構化數據序列化,可用於數據存儲、通訊協議等方面。它不依賴於語言和平臺而且可擴展性極強。現階段官方支持C++、JAVA、Python等三種編程語言,但能夠找到大量的幾乎涵蓋全部語言的第三方拓展包。node
同爲數據的存儲格式,和json相比,Protocol Buffers的優勢主要體如今性能和體積上,性能方面須要實際的測試,暫且不說,數據體積方面的優點是比較明顯的,例如,一個json文件:c++
再看一個protobuf文件:git
json文件的問題在於無效數據太多,例如Name
和Gender
等,這些內容大量重複出現,使得數據體積較大。再看protobuf文件,它使用一個惟一的id(數字)來代替json裏複雜的key,這樣只要數據發送方和接受方都按同一套「模板」解析數據,就能夠大大縮短報文體積。github
ProtoBuf.js是基於ByteBuffer.js的Protocol Buffers純Javascript實現。主要功能是解析.proto
文件,構建message類,和簡單的編碼、解碼。目前我在一個node-webkit中使用protobuf格式於服務端進行數據交互(服務端是按照舊c++客戶端要求實現的protobuf)。web
目前對ProtoBuf.js的使用主要就是讀取舊的.proto
文件,建立message類,編碼,發送給服務端,以下:編程
user.proto
文件:json
nodejs代碼:編程語言
解碼的方法也很簡單:
另外protobuf.js還提供了一些工具,例如.proto
和.json
的轉換等,具體參看他的官網:https://github.com/dcodeIO/ProtoBuf.js
- 完 -