npm 包 redux-universal 使用教程

阅读时长 4 分钟读完

在前端领域,redux 管理状态成为了非常流行的一种方式,它被广泛应用于 React 和其他框架中。然而,随着应用的增长,我们可能需要将状态管理放在服务端以支持 SEO 、服务器端渲染等需求。为此,我们可以使用 redux-universal 这个 npm 包来实现同构应用。

安装

首先,我们需要在项目中安装 redux-universal:

使用

服务器端

redux-universal 允许我们在服务端和客户端上使用相同的 redux 配置。我们需要首先在服务器端创建 store ,并在创建完毕后将其序列化以在客户端上使用。

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

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

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

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

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

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

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

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

在上述示例中,我们首先创建了一个 Redux store ,然后将其序列化并注入到客户端的 HTML 中。注意要使用 serialize-javascript 包来对序列化出的字符串进行转义。

客户端

在客户端代码中,我们可以使用 createClientStore 方法来创建一个客户端 store ,并将服务端传递的预加载状态传入:

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

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

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

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

注意,客户端端代码使用了 ReactDOM.hydrate 来执行客户端渲染,以避免传入的预加载状态被完全替换。

总结

redux-universal 允许我们在服务端和客户端上重用相同的代码和状态,实现了真正的同构应用。使用 redux-universal,我们可以通过创建服务器端 store 和客户端 store 的方式来完成同构应用,并且避免了在服务端和客户端上重复编写相同的代码,并提高了应用性能。

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

纠错
反馈