Google 协议缓冲区:JavaScript 示例

IT技术 javascript protocol-buffers
2021-02-21 02:49:41

在 JavaScript 中使用 Google Protocol Buffers 是一个不错的选择还是使用 JSON 更好?

另外,如果有人能给我一个关于 JavaScript 中协议缓冲区实现的简单示例,那就太好了。Google 网站上的文档很少。

4个回答

[编辑] Google 的协议缓冲区的开源实现可在github 上找到


官方 protobuf 项目仅支持 Java、C++ 和 Python。不是 JavaScript。

根据该项目的 Wiki,有三个项目将协议缓冲区移植到 Javascript。

Protobuf.js 是最新的。protobuf-js 已经两年没有更新了,所以我更喜欢 Protobuf.js。

问题仍然是“为什么”?:protobuf 可能更小一些,尤其是在传输大量数值时,但 JSON 只是 JS 空间中更常见的协议,并且可能得到更好的支持并且更容易集成到其他工具中。

@Why:因为您将消息和服务方法编写为 proto 并且免费获得代码框架?客户端/服务器端的序列化和反序列化。
2021-04-23 02:49:41
毫无疑问,JSON 更适合大多数情况。但是,在我的情况下,消息发送方不受我的控制,它会序列化为 protobuf 消息,因此我们需要解析来自 javascript 的消息。
2021-04-28 02:49:41
为什么:在任何其他情况下使用 protobuf 的原因相同。不要忘记浏览器现在有 WebSocket。此外,桌面应用程序可以在 Windows 8 中使用 JS 编写,应用程序(包括服务器)可以在 Node.js 中编写。
2021-05-02 02:49:41
如果您系统的 API 已经有其他二进制/protobuf 客户端,例如 Android 或 iOS 设备,那么将现有的 proto API 用于 Javascript Web 客户端比构建提供 JSON 的 API 的第二个副本更自然,只是为了支持一个网页。
2021-05-08 02:49:41
Code Climate 有一篇关于protobuf 相对于 JSON 的好处的精彩文章
2021-05-12 02:49:41

更新(28/7/2016): 发布 3.0.0 版- 除了一些其他功能外,还支持 Javascript 和其他语言。

谷歌最近向 protobufs 添加了对 JS 的 alpha 支持:https : //github.com/google/protobuf/releases/tag/v3.0.0-beta-2

用法:

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

发布文档的截图:

在此处输入图片说明

在此处输入图片说明

运行上述命令时,出现“缺少输入文件”错误。
2021-05-13 02:49:41

Protobuf 3.0.0 已发布:https : //github.com/google/protobuf/releases/tag/v3.0.0

并且它本机支持 JavaScript。基本信息以公告为准。

我们很快就会研究它。

试试Protostuff吧!

我在配置时遇到了一些困难,但我确信那更多是我的问题。您可以将 protobuff/protostuff 消息序列化/反序列化到/从 JSON。我正处于使用它的早期阶段,但到目前为止它看起来很有希望。

@PiminKonstantinKefaloukos 人正在javascript上搜索 protobuf 实现
2021-04-23 02:49:41
好奇的。为什么这被否决了(我对 Protostuff 没有意见)?
2021-04-26 02:49:41
@fuzzyanalysis Fair 虽然我会称这个答案不完整而不是简单地错误。由于您不能期望每个访问者都知道如何将 Java 编译为 JS 或什至知道 GWT 的存在,因此您至少希望有一个指向 GWT 的指针,或者理想情况下是让它在 GWT 中工作的工作示例——因为那可能相当冒险。
2021-04-30 02:49:41
@Pimin 可能是因为 protostuff 是 Java 而问题是 JavaScript?
2021-05-02 02:49:41
使用 Protostuff 为 GWT 构建 Javascript 对象: code.google.com/p/protostuff/wiki/GwtJsonOverlays完全切题。
2021-05-06 02:49:41