美文网首页Protobuf
protobufjs的简单介绍和使用

protobufjs的简单介绍和使用

作者: ANoman_M | 来源:发表于2017-06-12 14:31 被阅读2300次

    最近有这样一个需求:读取加密过的地图数据文件,并且根据给出的数据格式进行解密,从而取得数据。
    protobufjs就是这样一种工具。
    它是一种数据转换,序列化的工具。最初由google提出,并且开源之后吸引了各行业的人不断开发,优化,更新各个语言平台的版本。
    话不多说,本篇文章注重实际需求,所以理论知识不会详细介绍,也算是给自己的一份备忘录啦。

    安装

    Node环境下
    输入
    npm i protobufjs
    如果是5.0版本,可能还需要安装bytebufferlong
    截止2017/6/12,最新版本是6.73,因此优先介绍最新版本。

    定义数据格式文件(proto)

    根据需求,定义自己需要的数据格式proto文件。
    proto文件定义的数据结构将用于数据转换的过程。
    相当于一把“钥匙”,你拿着这把钥匙才能看到解码后的内容。

    使用proto

    使用proto文件有两个方法:

    • 使用protobufjs对象的load()方法直接加载
    • 使用命令行编译proto文件。生成自己需要的文件。你可以生成json文件,可以生成commonjs模块文件等等。
      编译方法:
      ·npm i protobufjs -g
      安装完成即可使用CLI
      然后使用pbjs ....的命令即可编译。具体命令参考文档。注意版本差异。

    读取文件,转换数据

    不管你采用以上的哪一种方法,现在开始读取编码文件了。
    你可以使用node.js的文件系统读取数据,也可以使用js的ajax读取数据。
    读取数据之后,直接使用protobufjs的decode方法就可以了。具体语法可以参考最后给出的链接,对于protobufjs的其他知识都有详细介绍。
    如果读取的data不对,你可能需要加一句
    var datas = new Uint8Array(data)

    5.0版本的异同

    5.0版本使用new Builder()[message]等的方式定义。
    decode的使用对象也有所差异,具体可参考文档。
    官方github地址
    官方API
    protobuf语法指南
    csdn介绍1
    csdn介绍2
    nodejs中使用protobufjs

    相关文章

      网友评论

        本文标题:protobufjs的简单介绍和使用

        本文链接:https://www.haomeiwen.com/subject/eollqxtx.html