React 中的服务端渲染及使用方法

阅读时长 5 分钟读完

React 是一个用于构建用户界面的 JavaScript 库,其流行度已经超过了其他类似库和框架。在前端开发中,React 经常被用于构建单页应用程序(SPA),但它也可以用于服务端渲染(SSR)。

服务端渲染是将 React 组件预先渲染为 HTML 字符串,并将这些字符串发送给客户端,而不是等待客户端执行 JavaScript 来渲染页面的技术。这种技术的好处是可以减少首次加载的时间,提高性能,并支持搜索引擎优化(SEO)。

为什么使用服务端渲染?

在 SPA 中,客户端会下载所有的 JavaScript 代码,并在浏览器中执行以组合页面。这样做有一些明显的缺点:

  • 用户需要等待 JavaScript 加载和执行,因此首次加载时间较长。
  • 搜索引擎爬虫无法执行 JavaScript,因此无法正确抓取并索引页面内容。
  • 对于较慢的设备和网络,JavaScript 可能需要几秒钟才能加载和执行,这会导致空白或闪烁的页面。

服务端渲染可以解决这些问题。通过在服务器上预先渲染 React 组件并将 HTML 发送给浏览器,可以:

  • 加快首次加载时间,因为浏览器只需要下载和显示 HTML 和 CSS,而不需要等待 JavaScript 执行。
  • 支持搜索引擎爬虫,因为它们可以直接抓取和索引服务端渲染的 HTML。
  • 改善设备和网络较慢的用户的体验,因为页面内容可以更快地呈现。

如何进行服务端渲染?

在 React 中进行服务端渲染需要以下步骤:

  1. 创建一个 Express 或 Koa 应用程序并安装 React 和相关中间件。
  2. 在服务器端,将 React 组件渲染为 HTML 字符串。
  3. 发送此 HTML 字符串和相关资源(例如样式表和脚本文件)给客户端以呈现应用程序。
  4. 在客户端中,使用 React 将应用程序呈现到 DOM 中,使其可交互。

步骤 1:创建应用程序

在服务器端创建 Express 应用程序:

此应用程序将提供静态资源(例如样式表和脚本文件)和服务端渲染的 HTML。

步骤 2:服务器端渲染

要将 React 组件渲染为 HTML 字符串,可以使用 ReactDOMServer.renderToString() 方法。例如,下面是渲染 <HelloWorld /> 组件的示例:

步骤 3:发送 HTML 和资源

将 HTML 和静态资源发送到客户端可以通过 Express 的路由处理函数实现:

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

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

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

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

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

此代码将服务器渲染的 HTML 字符串嵌入到页面中并将样式表和脚本文件作为静态资源加载。

步骤 4:客户端渲染

要在客户端中将 React 组件呈现到 DOM 中,可以使用 ReactDOM.hydrate() 方法。例如,下面是将 <HelloWorld /> 组件呈现到 DOM 中的示例:

注意,此代码调用了 ReactDOM.hydrate() 方法而不是 ReactDOM.render() 方法。这表示在客户端渲染之前,服务器端已经渲染了同样的 HTML,以便客户端可以接管并改变 React 组件。

总结

在本文中,我们介绍了 React 中的服务端渲染和使用方法。服务端渲染可以提高性能,支持搜索引擎优化,并改善较慢设备和网络的用户体验。要在 React 中进行服务端渲染,需要将组件渲染为 HTML 字符串并在服务器上发送静态资源和 HTML 字符串,然后在客户端中使用 ReactDOM.hydrate() 方法进行客户端渲染。这种技术需要一些额外的工作,但它可以改善 React 应用程序的性能和可用性。

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

纠错
反馈