从零开始搭建自己的博客 四:博客文章页面

本篇文章开始负责创建博客文章页面。本博客的文章都是用 Markdown 写的。那么 Markdown 渲染的方法也有很多种,有一些 npm 包专门用来负责 Markdown 渲染,比如 markd 等;Nuxt.js 官方也提供了一个叫做 Nuxt content 的模块用来渲染 Markdown。这个模块的好处是支持文件系统路由,也就是把 Markdown 文件放在对应的项目文件夹路径里,经过很简单的配置就可以在对应网址路径渲染自己的文章。本项目使用的就是 nuxt content。

安装 nuxt content

首先,安装 nuxt content:

可以用 yarn 来安装:

yarn add @nuxt/content

但是这个命令我没成功,我又用 npm 安装才成功的:

npm install @nuxt/content

配置

我们希望博客文章的 URL 路径都放在 /blog/ 之后,比如一篇标题为 example 的文章路径即为 /blog/example。因此我们在 pages 目录下,创建名为 blog 的目录,然后又在新创建的 blog 目录下,创建名为 [...slug].vue 的文件。

这个文件名字看起来很奇怪对不对?这个名字在这里起到了通配符的作用。也就是匹配一切 /blog/* 路径,一切 url 只要网址路径以 /blog/ 为前缀,都会用这个文件来渲染网页内容。

之后,在 @/pages/blog/[...slug].vue 中填入以下内容:

<!--  @/pages/blog/[...slug].vue -->

<template>
    <ContentDoc />
</template>

到了这里,nuxt content 相关的东西就已经初步配置好了。但是文章到现在还没有放进项目,所以我们接下来要放博客文章进去。

博客文章

但是我们博客文章放哪呢?我们可以在项目根目录下,创建 content 文件夹。之后我们在 content 文件夹里面,创建 blog 文件夹。然后往这个 blog 文件夹里面放上自己写的文章(需要是 markdown 格式)。这里我们创建 blog 文件夹是因为我们之前在 /pages/ 文件夹里创建的子文件夹的名称就是 blog

这里我们来测试一下。在 @/contents/blog/ 文件夹里,创建一个 markdown 文件 example.md。将内容填充为:

# 示例

**一个**测试**

之后浏览器打开 http://localhost:3000/blog/example,然后可以看到文章渲染成功了。

20231224221549

我们可以看出,@/pages/@/contents/ 里面的目录结构是相互对应的:当我们访问 URL /blog/example 时,页面路由会定位到 @/pages/blog/[...slug].vue 文件,之后,该文件中的 <ContentDoc> 对应了 @/contents/ 里面的内容,之后就把 @/contents/blog/example.md 的内容渲染了。

之后,我们就把所有自己写的博客文章都放 @/contents/blog 目录就行了。