Kto-Blog
Published on

Next.js 博客项目 - 快速起步

Authors
  • avatar
    Name
    Kto

Next.js 博客项目 - 快速起步

项目模板选用

推荐使用官方模板: tailwind-nextjs-starter-blog

这是一个功能完整、设计精美的 Next.js 博客模板,基于以下技术栈:

  • Next.js 15 - React 框架
  • Tailwind CSS - 实用优先的 CSS 框架
  • Contentlayer - MDX 内容管理
  • TypeScript - 类型安全
  • Framer Motion - 动画效果

1. 环境配置

1.1 安装 Node.js

访问 Node.js 官网 下载并安装对应系统版本。

版本要求:Node.js ^20.0.0

1.2 克隆项目

# 使用 git clone
git clone https://github.com/timlrx/tailwind-nextjs-starter-blog.git
cd tailwind-nextjs-starter-blog

# 或者 fork 到自己的仓库后克隆
git clone https://github.com/YOUR_USERNAME/tailwind-nextjs-starter-blog.git

1.3 依赖安装

npm install
# 或
yarn install

1.4 开发工具推荐

工具名称类型说明
VSCode免费推荐安装 Tailwind CSS IntelliSense 插件
WebStorm付费JetBrains 全能 IDE
Cursor免费/付费AI 辅助编程工具

1.5 环境变量配置

创建 .env.local 文件(可选):

# 基础路径(如果部署在子目录)
BASE_PATH=

# 分析工具 ID(如 Umami)
NEXT_UMAMI_ID=

# Giscus 评论系统(可选)
NEXT_PUBLIC_GISCUS_REPO=
NEXT_PUBLIC_GISCUS_REPOSITORY_ID=
NEXT_PUBLIC_GISCUS_CATEGORY=
NEXT_PUBLIC_GISCUS_CATEGORY_ID=

# 其他环境变量...

2. 项目文件配置

2.1 核心配置文件结构

├── data/
│ ├── siteMetadata.js # 网站元数据配置
│ ├── authors/
│ │ └── default.mdx # 作者信息
│ ├── projectsData.js # 项目展示数据
│ ├── headerNavLinks.js # 导航菜单配置
│ └── blog/ # 博客文章目录
├── public/
│ └── static/ # 静态资源(图片、logo 等)
├── components/ # React 组件
├── layouts/ # 页面布局组件
├── app/ # Next.js App Router 页面
├── next.config.js # Next.js 配置
├── tailwind.config.js # Tailwind CSS 配置
└── contentlayer.config.ts # Contentlayer 配置

2.2 网站元数据配置

文件路径data/siteMetadata.js

这是最重要的配置文件,包含网站的所有基本信息:

const siteMetadata = {
  // 基本信息
  title: '你的博客标题',
  author: '你的名字',
  headerTitle: '网站头部标题',
  description: '网站描述',
  language: 'zh-CN',

  // 主题设置
  theme: 'system', // system, dark 或 light

  // 网站地址
  siteUrl: 'https://your-domain.com',
  siteRepo: 'https://github.com/YOUR_USERNAME/repo',

  // 资源路径
  siteLogo: '/static/images/logo.png',
  socialBanner: '/static/images/twitter-card.png',

  // 社交媒体链接(不需要的可以注释掉)
  email: 'your-email@example.com',
  github: 'https://github.com/YOUR_USERNAME',
  twitter: 'https://twitter.com/YOUR_USERNAME',
  // linkedin: 'https://linkedin.com/in/YOUR_USERNAME',
  // youtube: 'https://youtube.com/YOUR_CHANNEL',

  // 其他配置
  locale: 'zh-CN',
  stickyNav: false, // 是否固定导航栏

  // 分析工具(可选)
  analytics: {
    umamiAnalytics: {
      umamiWebsiteId: process.env.NEXT_UMAMI_ID,
    },
  },

  // 评论系统(可选)
  comments: {
    provider: 'giscus',
    giscusConfig: {
      repo: process.env.NEXT_PUBLIC_GISCUS_REPO,
      // ... 其他配置
    },
  },

  // 搜索功能
  search: {
    provider: 'kbar',
    kbarConfig: {
      searchDocumentsPath: '/search.json',
    },
  },
}

2.3 作者信息配置

文件路径data/authors/default.mdx

---
name: 你的名字
avatar: /static/images/avatar.png
occupation: 你的职业
company: 你的公司
email: your-email@example.com
github: https://github.com/YOUR_USERNAME
---

# 个人简介

在这里写你的个人简介,支持 Markdown 和 React 组件。

2.4 导航菜单配置

文件路径data/headerNavLinks.js

const headerNavLinks = [
  { href: '/blog', title: '博客' },
  { href: '/tags', title: '标签' },
  { href: '/projects', title: '项目' },
  { href: '/about', title: '关于' },
  // 添加更多导航链接...
]

2.5 项目展示配置

文件路径data/projectsData.js

const projectsData = [
  {
    title: '项目名称',
    description: '项目描述',
    imgSrc: '/static/images/project-image.png',
    href: 'https://github.com/YOUR_USERNAME/project',
  },
  // 添加更多项目...
]

3. Next.js 配置

3.1 基础配置

文件路径next.config.js

主要配置项包括:

  • 图片优化:配置远程图片域名
  • 安全头部:CSP、HSTS 等安全策略
  • Server Actions:允许的源地址
  • 构建优化:导出模式、图片格式等

3.2 图片域名配置

如果需要在文章中使用外部图片,需要在 next.config.js 中配置:

images: {
  remotePatterns: [
    {
      protocol: 'https',
      hostname: 'example.com',
    },
    // 添加更多域名...
  ],
}

4. 启动项目

4.1 开发模式

npm run dev
# 或
yarn dev

访问 http://localhost:3000 查看效果。

4.2 生产构建

npm run build
# 或
yarn build

4.3 启动生产服务器

npm run serve
# 或
yarn serve

5. 撰写博客

5.1 创建博客文章

data/blog 目录下创建 .mdx 文件:

---
title: '文章标题'
date: '2025-01-20'
tags: ['tag1', 'tag2']
draft: false
summary: '文章摘要,会显示在列表页'
---

# 文章内容

在这里使用 Markdown 语法撰写文章内容。

## 代码示例

```javascript
console.log('Hello, World!')
```

支持的功能

  • 代码高亮:使用 Prism.js
  • 数学公式:支持 KaTeX
  • 图片:支持本地和远程图片
  • 表格:标准 Markdown 表格
  • 引用:支持 GitHub 风格的警告框

### 5.2 Frontmatter 配置说明

| 字段 | 说明 | 必填 |
|-----|------|------|
| title | 文章标题 ||
| date | 发布日期 ||
| tags | 标签数组 ||
| draft | 是否为草稿 | 否(默认 false|
| summary | 文章摘要 ||
| layout | 布局类型 | 否(默认 PostLayout) |

### 5.3 支持的布局类型

- `PostLayout` - 默认两栏布局(左侧内容,右侧目录)
- `PostSimple` - 简化版布局
- `PostBanner` - 带横幅图片的布局

### 5.4 文章分类

可以在 `data/blog` 下创建子目录来分类文章:

```markdown
data/
└── blog/
    ├── 教学/
    ├── 技术/
    ├── 生活/
    └── Uncategorized/

6. 自定义样式

6.1 Tailwind CSS 配置

文件路径tailwind.config.js

可以自定义颜色、字体、间距等:

module.exports = {
  theme: {
    extend: {
      colors: {
        primary: '#your-color',
      },
    },
  },
}

6.2 代码高亮主题

文件路径css/prism.css

替换为喜欢的 PrismJS 主题,或自定义样式。

6.3 全局样式

文件路径css/tailwind.css

添加自定义全局样式。

7. 部署

7.1 Vercel 部署(推荐)

  1. 将代码推送到 GitHub
  2. Vercel 导入项目
  3. 配置环境变量
  4. 自动部署

7.2 其他平台

  • Netlify:支持 Git 集成
  • GitHub Pages:需要配置输出模式
  • 自托管:使用 Docker 或 Node.js

7.3 环境变量

在部署平台配置以下环境变量:

NODE_ENV=production
BASE_PATH=
NEXT_UMAMI_ID=
# 其他需要的环境变量...

8. 常见问题

8.1 图片不显示

  • 检查图片路径是否正确
  • 确认远程域名已在 next.config.js 中配置
  • 本地图片放在 public/static 目录

8.2 样式不生效

  • 清除 .next 缓存目录
  • 重新运行 npm run dev
  • 检查 Tailwind 配置

8.3 构建失败

  • 检查 Node.js 版本是否符合要求
  • 删除 node_modulesyarn.lock 重新安装
  • 查看错误日志定位问题

9. 进阶功能

9.1 自定义组件

components/MDXComponents.tsx 中添加自定义组件,可在 MDX 文件中使用:

import CustomComponent from './CustomComponent'

const components = {
  CustomComponent,
  // ... 其他组件
}

9.2 添加页面

app/ 目录下创建新的页面路由:

// app/custom-page/page.tsx
export default function CustomPage() {
  return <div>自定义页面内容</div>
}

9.3 集成第三方服务

  • 评论系统:Giscus、Utterances、Disqus
  • 分析工具:Umami、Google Analytics、Plausible
  • 搜索功能:Algolia、Kbar

10. 参考资源

总结

通过以上步骤,你已经成功搭建了一个功能完整的 Next.js 博客。现在可以:

  1. ✅ 自定义网站信息
  2. ✅ 撰写和发布博客文章
  3. ✅ 配置导航和项目展示
  4. ✅ 自定义样式和主题
  5. ✅ 部署到生产环境

接下来可以探索更多高级功能,如添加评论系统、集成分析工具、优化 SEO 等。祝你在博客写作之旅中收获满满!

评论区

欢迎参与讨论,分享您的想法

加载后显示排序
登录后即可发表评论和回复