如何使用 Next.js 制作 SEO 友好的动态页面

前言

SEO(搜索引擎优化)是一个相对于前端而言比较陌生的一个概念。它可以使得网站更容易被搜索引擎识别和收录,从而提高网站的曝光率和流量。

在开发动态页面时,我们通常需要注意以下几点来实现 SEO 友好:

  • 静态化网站内容
  • 手动提供元数据
  • 选用合适的 URL 路径
  • 确保 HTML 结构合法且语义正确
  • 为页面设置合适的标题和描述

Next.js 是一个流行的 React.js 框架,它可以使得我们在开发时轻松地实现以上点。在本文中,我们将学习如何使用 Next.js 制作 SEO 友好的动态页面。

静态化网站内容

通常,搜索引擎检索的是静态 HTML 页面,而非动态页面。因此,我们需要将我们的网站内容静态化。

在 Next.js 中可以使用 getStaticProps 来获取动态数据,并生成静态 HTML。例如:

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

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

上面的代码将获取到的数据 posts 保存在静态 HTML 页面中。进行这个操作后,这个页面将不再依赖数据库以及服务端的其他环境设置,从而符合搜索引擎的检索条件。

手动提供元数据

搜索引擎使用元数据来显示摘要、标题及其他信息。你可以使用 Head 组件为你的页面提供元数据。例如:

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

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

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

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

这个 Head 组件将会向客户端返回如下 HTML:

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

选用合适的 URL 路径

搜索引擎针对 URL 的结构也有自己的检索策略。一个合适的 URL 路径可以让你的页面更容易被搜索引擎识别和收录。在 Next.js 中,你可以使用 getStaticPaths 方法与 getStaticProps 方法一起使用来生成静态路径:

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

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

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

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

在上面的代码中,getStaticPaths 方法返回的 paths 数组包含了所有可能的 URL 路径。由于 fallback 参数被设置成了 false,任何其他的 URL 路径将会被 404。

确保 HTML 结构合法且语义正确

虽然搜索引擎对于 HTML 结构的要求并不如以前那样苛刻,但是它们仍然会优先选择那些 HTML 结构合法且语义正确的页面。在 Next.js 中,你可以使用 React 的 semantic HTML 来保证 HTML 结构具有语义性。例如:

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

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

在上面的代码中,我们使用了 semantic HTML 来区分了页面中的头部、主体和页脚。这个语义性,使得我们的页面更容易被搜索引擎理解。

为页面设置合适的标题和描述

在上面的代码中,我们已经为我们的页面设置了标题和描述。但是,如果我们的页面是动态生成的,那么我们就需要动态地设置标题和描述。在 Next.js 中,我们可以动态设置标题和描述,例如:

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

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

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

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

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

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

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

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

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

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

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

在上面的代码中,我们从 API 获取了文章 post,并在 Head 中动态设置了文章 titlemeta 标签。

总结

在本文中,我们学习了如何使用 Next.js 制作 SEO 友好的动态页面。我们了解到了静态化页面、手动提供元数据、选用合适的 URL 路径、确保 HTML 结构合法且语义正确,以及为页面设置合适的标题和描述,这些操作可以使得我们的页面更容易被搜索引擎识别和收录。希望本文能够帮助你更好地了解如何使用 Next.js 制作 SEO 友好的动态页面。

参考资料

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6485b3ff48841e9894471634


猜你喜欢

  • # 理解 ECMAScript 2021 中的 Nullish Coalescing 运算符

    理解 ECMAScript 2021 中的 Nullish Coalescing 运算符 在 ECMAScript 2021 中加入了 Nullish Coalescing 运算符,它与 || 运算符...

    1 年前
  • 如何通过 Express.js 使用 OAuth 进行身份验证?

    OAuth 是一种开放式标准,允许用户授权应用程序访问第三方服务中的资源。在这篇文章中,我们将深入探讨如何使用 Express.js 和 OAuth 进行身份验证。

    1 年前
  • GraphQL 数据加载器 (Dataloader) 的运用

    在前端开发中,我们经常需要从前端到后端发出多次请求来获取相关数据。在 GraphQL 中使用 DataLoader 可以将这些请求合并为一次,从而减少网络请求的次数,提高应用的性能。

    1 年前
  • 解决 Docker 网络问题,让容器连接互联网

    背景 Docker 是一种基于容器的虚拟化技术,可以轻松部署应用程序和服务。Docker 技术的核心是容器,容器本身是运行在操作系统级别的轻量级虚拟化方案,可以显著提高应用程序的可移植性和可扩展性。

    1 年前
  • Vue.js 中如何使用 mixins 实现代码复用

    Vue.js 是一种流行的前端 JavaScript 框架,提供了方便的工具来创建可维护和可扩展的 Web 应用程序。其中一个强大的功能是 mixins,可以将相同的代码和功能重用在多个组件中,从而减...

    1 年前
  • Chai 报错:expected [Function] to be a function,如何解决

    在前端开发中,我们经常会使用各种测试工具来保证代码的质量和正确性。而 Chai 是一个常用的测试框架,它提供了强大的断言库,使得我们能够更加方便地进行测试。然而,在使用 Chai 进行测试的过程中,你...

    1 年前
  • 使用 Babel 编译过程中如何跳过不需要编译的文件?

    前端开发者在使用 Babel 进行代码编译时,经常会遇到一些不需要编译的文件或模块,比如 node_modules 中的依赖库,或者开发者自己编写的一些公共代码。这些不需要编译的代码会导致编译时间变长...

    1 年前
  • CSS Grid 多列、跨列、合并列相关问题解决方案

    前言 CSS Grid 是一种强大的网格布局系统,可以轻松实现多列、跨列、合并列等布局效果。然而,有时候我们会遇到一些问题,比如如何实现复杂的布局、如何让网格自适应长度等等。

    1 年前
  • RxJS 中的 concatMap 与 switchMap 的区别

    在 RxJS 中,concatMap 和 switchMap 是两种常用的操作符。它们都用于将一个 Observable 转换为另一个 Observable。但是,它们在转换过程中的行为和使用场景是不...

    1 年前
  • 实用 Less mixins 整理

    介绍 Less 是一种 CSS 预处理器,它极大地简化了 CSS 的编写和管理。而 mixins 则是 Less 的一个非常重要的特性,它可以把相同的样式定义抽离成一个 mixin,然后在需要的地方引...

    1 年前
  • Material Design 风格的标签布局实现技巧

    Material Design 是一种由 Google 推出的设计语言,其特点是纯平面、图标化、排版简洁。在前端开发中,我们可以借鉴 Material Design 风格来设计我们的网页,使用户体验更...

    1 年前
  • ES7 中的默认导出和命名导出详解

    在 ES6 中,我们已经熟悉了 export 和 import 关键字,它们可以让我们在不同的模块之间进行数据的共享。而在 ES7 中,新增了默认导出和命名导出这两种方式,让前端开发变得更加方便。

    1 年前
  • Redis 数据清理的最佳实践方案

    Redis 是一种高性能、无数据约束的 NoSQL 数据库,常常被用于缓存、队列、会话管理等场景,被广泛应用于 Web 开发中。但是随着 Redis 数据增长,开发人员必须考虑 Redis 数据的清理...

    1 年前
  • RESTful API 实现数据异步处理的方案

    在前端开发过程中,经常需要处理大量的数据。而数据量的增加会导致页面变得缓慢,因此需要使用一些异步处理方案来加快页面的加载速度。 RESTful API 是一种很好的数据处理方案,本文就介绍如何使用它来...

    1 年前
  • Socket.io 中的 Socket 对象使用详解

    Socket.io 是一个面向实时 Web 应用程序的 JavaScript 库。它允许客户端和服务器之间进行实时通信,是构建实时 Web 应用程序的必备工具之一。

    1 年前
  • PWA Push 及 Notification 优化实践

    在现代化 Web 应用开发中,PWA 技术已经成为了非常重要的一项技术和实践。其中,push 及 notification 功能的应用和实现,更是极具指导意义和深度。

    1 年前
  • Custom Elements和Redux的混合开发教程

    Custom Elements和Redux是两个非常强大的前端开发工具。其中Custom Elements允许您创建您自己的自定义HTML元素,并在您的应用程序中重复使用它们。

    1 年前
  • 使用 Mocha 测试时如何 Mock 掉定时器?

    在前端开发中,我们通常会使用 Mocha 这个测试框架进行单元测试。在测试过程中,经常需要模拟或 mock 掉某些外部的依赖,比如定时器。而如何 mock 掉定时器,是一个经常困扰前端工程师的问题。

    1 年前
  • Node.js 性能优化:使用内存池技术

    在 Node.js 的 Web 应用程序中,性能是非常重要的一项关注点。一个高性能的 Node.js 应用程序可以提高用户体验,减少服务器负载,以及降低运营成本。在 Node.js 性能优化的过程中,...

    1 年前
  • Node.js 中的 Web 框架选型与比较

    随着 Node.js 的流行,越来越多的 Web 框架出现在了我们的视野中。选择一个适合自己的 Web 框架是 Web 开发的第一步,本文将对 Node.js 的 Web 框架进行介绍和比较,并提供相...

    1 年前

相关推荐

    暂无文章