nikolakoco
nikolakoco

Reputation: 1403

Google Protocol Buffers: JavaScript Example

Is it a good choice to use Google Protocol Buffers in JavaScript or is it better to do it with JSON?

Also it'd be great if someone can give me a simple example about Protocol Buffers implementation in JavaScript. The documentation on the Google's site is scarce.

Upvotes: 93

Views: 102083

Answers (5)

EdgarK
EdgarK

Reputation: 890

2023 Update. The JS implementation had been introduces and branched out of the main protoc app. Now you can install it using

npm i grpc-tools

Then use node node_modules/grpc-tools/bin/protoc.js the arguments are the same as for usual protoc. For example:

node node_modules/grpc-tools/bin/protoc.js --js_out=import_style=commonjs,binary:./dst --proto_path=./proto/ simple.proto

To use it with the usual require also install

npm i google-protobuf

Then you can simply require the resulting generated file and use it.

Upvotes: 2

dmeister
dmeister

Reputation: 35664

[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.

Upvotes: 82

AlikElzin-kilaka
AlikElzin-kilaka

Reputation: 36051

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

Upvotes: 44

Ondrej Burkert
Ondrej Burkert

Reputation: 7282

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.

Upvotes: 6

JeffSpicoli
JeffSpicoli

Reputation: 93

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.

Upvotes: -1

Related Questions