Google 协议缓冲: JavaScript 示例

在 JavaScript 中使用 Google 协议缓冲是一个好的选择还是使用 JSON 更好?

另外,如果有人能给我一个简单的 JavaScript 协议缓冲实现的例子就更好了。谷歌网站上的文档很少。

87186 次浏览

[edit] Google's open source implementation of protocol buffers is available on GitHub


The official protobuf project support only Java, C++, and Python. Not JavaScript.

According to the Wiki of the project, there are three projects porting protocol buffers to JavaScript.

Protobuf.js is up to date. protobuf-js has not been updated for two years, so I would favor Protobuf.js.

The question still is "Why?": protobuf may be a bit smaller, especially when a lot of numeric values are transferred, but JSON is simply the more common protocol in the JS space and probably better supported and easier to integrate into other tools.

Try Protostuff!

I had a bit of hard time configuring but I'm sure that was more of my issue. You can serialize/deserialize a protobuff/protostuff message to/from JSON. I'm at the early stages of using this but it looks promising so far.

Update (28/7/2016): Release 3.0.0 was published - supporting Javascript and other languages as well - in addition to some other features.

Google have recently added alpha support for JS to protobufs: https://github.com/google/protobuf/releases/tag/v3.0.0-beta-2

Usage:

protoc -I=$SRC_DIR --js_out=$DST_DIR $SRC_DIR/addressbook.proto

Screenshots from the release documentation:

enter image description here

enter image description here

Protobuf 3.0.0 is out: https://github.com/google/protobuf/releases/tag/v3.0.0

And it support JavaScript natively. The basic information is in the announcement.

We are going to look into it soon.