本站是如何搭建的
这个博客最大的特点是:不需要数据库,也不需要后台,把 Markdown 文件丢进 blog 目录,重新构建就能发布。
技术栈
- Next.js 16:全栈 React 框架,负责路由与静态生成
- React 19:底层 UI 库
- next-mdx-remote:在服务端把
.mdx编译为 React 组件 - gray-matter:解析 Markdown 文件头部的 YAML frontmatter
- remark-gfm + rehype-highlight:GFM 语法支持与代码高亮
文章是怎么被读取的
src/lib/posts.js 在构建时直接读取项目根目录 blog 文件夹里的所有 .md / .mdx 文件:
import fs from 'fs';
import path from 'path';
import matter from 'gray-matter';
const BLOG_DIR = path.join(process.cwd(), 'blog');
const files = fs.readdirSync(BLOG_DIR).filter((f) => /\.(md|mdx)$/.test(f));
每一篇文章的 frontmatter 提供元信息:
---
title: '文章标题'
date: '2026-08-12'
description: '摘要'
tags: ['技术', 'MDX']
---
静态导出
在 next.config.mjs 中开启:
const nextConfig = {
output: 'export',
images: { unoptimized: true },
trailingSlash: true,
};
执行 npm run build 后,所有页面(首页、文章列表、每篇文章、关于页)都会被预渲染成纯 HTML/CSS/JS,输出到 out/ 目录,可以托管到 GitHub Pages、Vercel、任意 Nginx 等任何静态服务器。
构建产物
静态导出后不依赖 Node.js 服务端,任意静态托管都能跑起来。
给写作的人
新增一篇博客只需要两步:
- 在
blog/下新建一个xxx.mdx文件 - 写好 frontmatter 和正文,重新
npm run build
就这样,剩下的交给 Next.js。