在 Next.js 中搭建 Blog 网站的详细过程教程

阅读时长 8 分钟读完

本文将会详细介绍如何使用 Next.js 搭建一个简单的 Blog 网站。我们会涵盖到如何初始化项目、创建路由、建立 Markdown 文件系统、以及如何在服务器端生成静态网站。

初始化项目

我们首先需要准备好开发环境,并安装 Node.js 和 npm。完成后,在终端中输入以下命令来初始化我们的 Next.js 项目:

这个命令会创建一个名为 my-blog 的工程,并安装所有 Next.js 的依赖包。

创建路由

在 Next.js 中,我们可以通过文件系统来创建路由。例如,我们想要创建一个 /posts 的路由,我们只需要在项目的 pages 目录中创建一个 posts.js 的文件即可。

在这个例子中,我们可以在 pages/posts.js 文件中创建如下路由:

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

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

------ ------- -----
展开代码

当用户访问 /posts 路由的时候,Next.js 将会自动渲染 Posts 组件。

建立 Markdown 文件系统

为了创建我们的 Blog,我们需要创建一些 Markdown 文件。在 Next.js 中,可以使用 gray-matterremark 库来处理 Markdown 文件。

首先,我们需要安装这些依赖包:

然后,我们新建一个 posts 目录,并在里面创建一些 Markdown 文件。例如,我们在 posts 目录中创建 hello-world.md ,其内容如下:

接着,我们可以使用以下代码加载 hello-world.md 文件,并将其转化成 React 组件并渲染出来:

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

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

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

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

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

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

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

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

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

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

  ------ -
    ------ -
      -----------
    -
  -
-
展开代码

在上面的代码中,我们首先获取了 posts 目录下的所有文件的文件名,然后将其转化为路由的参数,并将其作为 Next.js 中的 getStaticPaths 静态方法的返回值,这个方法将会让 Next.js 预渲染所有 Markdown 文件转化后的静态页面。

getStaticProps 方法中,我们通过调用 getPostData 方法来获取一个 Markdown 文件的元信息和内容,然后作为 Post 组件的属性返回,这将会使用在服务器端渲染时。

静态生成

接下来,我们将会使用 Next.js 中的 getStaticPropsgetStaticPaths 方法来在服务器端静态生成我们的 Blog 网站。首先,我们需要修改项目中的配置文件 next.config.js,并添加如下代码:

-- -------------------- ---- -------
-------------- - -
  -- ---
  ----- ---------- -
    ------ -
      -
        ------- ---------
        ------------ ---
      --
      -
        ------- ----------------
        ------------ --------------
      -
    -
  --
  ----- ----------- -
    ------ -
      -
        ------- ------------------
        ------------ ---------------
        ---------- ----
      -
    -
  -
-
展开代码

在上面的代码中,我们配置了几个路由映射规则,这将会让 Next.js 捕获一些这个路由规则对应的请求,并将其重定向到对应的路由上。

接着,在 pages/post/[slug].js 文件中,我们使用下面的代码来生成所有的路由的静态页面:

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

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

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

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

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

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

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

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

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

  ------ -
    ------
    --------- -----
  -
-
展开代码

在这个例子中,我们首先使用 getPostData 方法获取一个 Markdown 文件的元信息和内容,然后将其传递到 Post 组件中进行渲染。接着,在 getStaticPropsgetStaticPaths 中,我们通过遍历所有的 Markdown 文件来确定生成所有的 Blog 静态页面所需要的静态路径。

最后,在终端中输入以下命令来生成静态网站的所有页面:

这个命令会在项目的 out 目录下生成所有的静态网站文件。

到这里,我们就完成了一个简单的 Blog 网站的创建。这个例子也可以用于构建更加复杂的网站和应用程序。

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

纠错
反馈

纠错反馈