Next.js 如何实现服务端渲染?

阅读时长 6 分钟读完

什么是服务端渲染?

在传统的前端渲染中,浏览器会请求服务器获取 HTML、CSS 和 JavaScript 等静态资源,在客户端进行渲染。而服务端渲染(SSR)则是在服务器端将 HTML 文件直接渲染出来,再将带有渲染后数据的 HTML 文件返回客户端,用于展示。

服务端渲染的好处在于可以提高首次加载速度、SEO 优化以及更好的用户体验。服务端渲染的实现方式有很多,其中 Next.js 是目前比较流行的框架之一。

Next.js 是什么?

Next.js 是一个 React 的服务端渲染框架,它允许您在 Web 应用程序中使用服务端渲染和静态网站生成。Next.js 是一个轻量级框架,它提供了一些非常有用的功能,包括:

  • 支持服务端渲染和静态 HTML 导出,免费提供静态 HTML 导出,没有任何限制,可以随时生成静态网站
  • 自动语言处理,允许您轻松处理不同语言的国际化应用程序
  • 智能缓存等功能

如果您正在使用 React,并且想要实现服务器端渲染,那么 Next.js 可能是很好的选择。

下面我们将深入了解 Next.js 如何实现服务端渲染。

1. 创建Next.js 应用程序

使用 create-next-app 工具来创建一个新的 Next.js 应用程序:

然后打开浏览器并访问 http://localhost:3000,您应该能够看到您的应用程序已经在本地运行。

2. 创建页面

在 Next.js 应用程序中,您可以在 pages 目录中创建页面组件。Next.js 约定这些页面组件将成为 Web 应用程序中的每个路由路径。

例如,您可以在 pages/index.js 中创建一个简单的欢迎页面:

在这个例子中,我们定义了一个叫做 HomePage 的组件,它将作为 / 路径所对应的页面。

3. 启用服务端渲染

Next.js 默认情况下会使用客户端渲染,是允许浏览器加载 JavaScript 然后再从服务端获取数据。如果想要使用服务端渲染,有两个选项:

  • 在页面组件中使用 getServerSideProps() 方法
  • 在页面组件中使用 getStaticProps() 方法,并在构建时预先渲染页面

3.1 使用 getServerSideProps() 方法

在页面组件中使用 getServerSideProps() 方法,可以在每次页面请求时从服务端获取数据。下面是一个例子:

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

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

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

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

在这个例子中,getServerSideProps() 方法将返回从外部 API 获取的数据,并将其传递给页面组件作为 props。页面组件将用这些 props 渲染页面。

3.2 使用 getStaticProps() 方法

在页面组件中使用 getStaticProps() 方法,并在构建时预先渲染页面。这种方式适用于对于使用客户端渲染是过于频繁的数据。如果数据不会改变太多,我们就可以使用此方式将数据提前预备到 HTML _document 中。下面是一个例子:

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

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

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

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

在这个例子中,getStaticProps() 方法将返回从外部 API 获取的数据,并将其传递给页面组件作为 props。由于这些数据仅在构建时预先生成一次,因此对于使用客户端渲染过于频繁的数据使用这种方式比较合适。

4. 在 _document.js 中定义全局文件

Next.js 的 _document.js 文件将在每个页面请求时调用,它允许您自定义应用程序的 HTMLbody 元素。例如,您可以在这个文件中添加全局的 CSS、Google 分析或其他种类的脚本。

下面是一个简单的例子:

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

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

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

在这个例子中,我们添加了一个来自 Bootstrap 的样式链接。

总结

本文介绍了 Next.js 如何实现服务端渲染,包括创建 Next.js 应用程序、创建页面、启用服务端渲染和定义全局文件。通过本文,您可以更好地理解服务端渲染的好处并学习 Next.js 的实现方式。希望本文对您有所启发,使您更好地理解和使用服务端渲染。

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

纠错
反馈