npm 包 @protobufjs/fetch 使用教程

阅读时长 5 分钟读完

在前端开发中,数据通常是以 JSON 格式传输的,但是对于大量的数据或者数据结构复杂的情况下,我们可能需要使用 Protocol Buffers 来进行数据交换。而 @protobufjs/fetch 包就是一个基于 fetch 操作的 Protocol Buffers 数据解析工具。

安装

使用 @protobufjs/fetch 包之前需要先安装以下依赖:

  • protobufjs:Protocol Buffers 的 JavaScript 实现
  • @protobufjs/aspromise:将 Protocol Buffers 数据转换为 Promise 格式
  • node-fetch:fetch 的 Node.js 实现

使用 npm 安装:

基本用法

1. 引入

2. 创建类

-- -------------------- ---- -------
----- ---- - ------------------------
  ------- -
    ------------- -
      ------- -
        ----- -
          ----- ---------
          --- --
        --
        ---- -
          ----- --------
          --- --
        --
      --
    --
  --
---

----- ------------ - --------------------------------

3. 解析数据

decode 方法会解析传入的二进制数据,并返回解析后的 JavaScript 对象。

实际应用

1. 在前端发送请求

-- -------------------- ---- -------
----- ------- - ----- -- -- -
  --- -
    ----- ----------- - ---------------------
      ----- ------
      ---- ---
    ------------

    ----- -------- - ----- ------------------------- -
      ------- -------
      -------- -
        --------------- ---------------------------
      --
      ----- ------------
    ---

    ----- ------- - --------------------
      ----- ----------------------
    --
  - ----- ------- -
    ---------------------
  -
--

需要注意的是,使用 Protocol Buffers 进行数据交换时发送请求的 header 必须是 application/octet-stream

2. 在后端解析数据

以下是一个基于 Node.js 的后端代码示例:

-- -------------------- ---- -------
----- ------- - -------------------
----- -------- - ----------------------

----- --- - ----------
----- ---- - -----

----- ---- - ------------------------
  ------- -
    ------------- -
      ------- -
        ----- -
          ----- ---------
          --- --
        --
        ---- -
          ----- --------
          --- --
        --
      --
    --
  --
---

----- ------------ - --------------------------------

-----------------------

---------------------------- ----- ---- -- -
  ----- ------- - ------------------------------

  ---------------------

  ---------------- - - ------------ - -----
---

---------------- -- -- -
  ---------------- --------- -- ---------------------------
---

在后端代码中,使用 express.raw() 中间件来处理接收到的二进制数据,然后使用 decode 方法解析数据。

总结

@protobufjs/fetch 包是一个基于 fetch 操作的 Protocol Buffers 数据解析工具。使用它可以方便地进行 Protocol Buffers 数据的发送和接收,并且可以在前端和后端共同使用。在实际开发中,需要注意请求的 header 必须是 application/octet-stream,否则会出现解析不了的情况。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/protobufjs-fetch