前言
将使用的套件:
- next Next.js 框架
- next-mdx-remote 处理和载入 MDX 内容
- gray-matter 解析 Markdown 的前置资料
本教学的源代码库:
https://github.com/tszhong0411/nextjs-mdx-blog
示例
如何建立博客
首先,我们使用以下指令建立 Next.js 项目:
接着,建立以下档案:
components/layout.jsx
- 将所有组件包装在容器中(可选,用于样式)data/blog/*.mdx
- 博客文章lib/format-date.js
- 将日期格式化为MM DD, YYYY
pages/blog/[slug].jsx
- 文章页面,使用 动态路由
components
layout.jsx
data
blog
markdown.mdx
nextjs.mdx
react.mdx
lib
format-date.js
mdx.js
pages
blog
[slug].jsx
如何处理 Markdown 档案
首先建立变数 const root
,其值为根目录,process.cwd()
方法返回当前 Node.js 进程的工作目录。
接着定义变数 POSTS_PATH
,用于储存文章档案的路径。
使用 fs
读取该目录下的内容,即 data/blog
下的所有档案名。
然后撰写一个函数移除档案后缀名,稍后会用到。
接着根据 slug 获取文章内容。
接下来可以获取所有文章,以显示在首页。
格式化日期
首页
文章页面
这样,一个简单的博客就完成了。