npm 包 @shopify/react-server 使用教程

阅读时长 7 分钟读完

前言

在现代 web 应用开发中,前端框架扮演着越来越重要的角色,React 是其中的一种主流框架。借助 React,我们可以高效地构建复杂的用户界面,但在实际应用中,一个好的用户界面不仅是可视化界面的展示,还应该具备良好的性能和 SEO 优化,这正是 @shopify/react-server 这个 npm 包的作用所在。

在本篇文章中,我们将学习如何使用 @shopify/react-server 包,对于那些对 React 性能和 SEO 优化感兴趣的读者来说,是个非常有参考和实践意义的工具。

什么是 @shopify/react-server

首先来看一下 @shopify/react-server 是什么,该 npm 包是 Shopify 开发的 React 服务器渲染库,并提供了许多 React 应用开发中缺失的功能,如:

  • 在客户端和服务器上使用相同的路由
  • 缓存页面输出结果(包括 HTML、JSON 和其他从 React 组件输出的内容)
  • 使用“gzip”或“Deflate”等 HTTP 压缩算法来压缩输出流
  • SEO 优化(包括将链接与应用程序配置合并到 HTML 输出中以提高搜索引擎索引质量)

@shopify/react-server 是一个强大的工具,可以大大提高 React 应用的性能和 SEO 优化。

如何使用 @shopify/react-server

安装

前置条件:需要已有一个 React 应用,并通过如下命令安装 @shopify/react-server:

包导入

一般情况下,在根组件下导入 @shopify/react-server,它将扮演整个应用程序的“启动器”角色。我们需要在导入中使用 createServer 方法,示例代码如下:

应用启动

在 createServer 方法中,我们需要传入一个对象,包括两个属性:

  • 一个名为 'port' 的整数,用于指定应用程序启动的端口号
  • 一个名为 'proxyConfig' 的对象,用于指定代理配置,包括代理目标和端口

示例代码如下:

随后我们需要在启动完成的回调函数中,对服务器进行监听和销毁,这一步可能比较繁琐,代码如下:

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

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

路由同步

如果您的 React 应用使用了路由,那么您需要确保在服务端和客户端之间的路由同步。

@shopify/react-server 提供了一个名为 Router 的导出,我们可以通过示例代码配置路由同步:

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

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

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

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

router 的参数包括一个 history 对象和路由配置数组,此外,我们还可以通过修改此路由上的 router.beforeEach 和 router.afterEach 来获取路由处理的进程。

输出缓存

@shopify/react-server 还提供了一些内置的输出缓存机制来缓存页面输出结果,例如SSRManagerPersistentSSRManager

SSRManager

SSRManager 可以帮助我们使用缓存机制并避免重复生成页面元素。我们可以通过 createManager 方法来创建一个 SSRManager 并将它传递给 react-server 提供的 createRoutesRenderer 函数中,以便在服务器端缓存 React 组件的输出,示例代码如下:

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

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

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

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

PersistentSSRManager

如果您的应用程序是需要长时间运行的,例如一个后台任务或者一个轮播图,那么推荐使用PersistentSSRManager以防止过多的重复计算。与 SSRManager 类似,我们可以通过 PersistentSSRManager 创建一个缓存,示例代码如下:

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

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

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

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

总结

本篇文章介绍了如何使用 npm 包 @shopify/react-server 进行 React 服务器渲染,从而提高 React 应用程序的性能和 SEO 优化。我们通过简单明了的示例代码,带领读者深入理解了如何在服务端和客户端之间同步路由信息、如何进行输出缓存等功能,对于想要进一步提高 React 开发效率的读者,本文可作为很好的参考文献。

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

纠错
反馈