一个基于 Astro 构建的现代博客系统,支持 Markdown 写作、深色模式、响应式设计和 SEO 优化。
- ✅ 页面路由系统 - 支持首页、文章详情页、分类页、标签页、404页等
- ✅ 布局组件 - 统一的头部、底部、导航、侧边栏等布局结构
- ✅ Markdown 支持 - 使用 .md 或 .mdx 写博客文章
- ✅ 静态资源支持 - 支持图片、封面图、本地图标等资源
- ✅ 首页 - 显示文章列表、摘要、封面图、分页等
- ✅ 文章详情页 - 渲染 Markdown 内容,支持代码高亮
- ✅ 分类页 - 展示某个分类下的所有文章
- ✅ 标签页 - 展示某个标签下的所有文章
- ✅ 404 页面 - 自定义未找到页面
- ✅ 关于我页面 - 显示博主简介、联系方式等
- ✅ Tailwind CSS - 快速搭建 UI 风格
- ✅ 代码高亮 - 使用 Astro 的 shiki 插件
- ✅ 文章卡片组件 - 显示文章列表中的封面图 + 摘要等信息
- ✅ 深色模式 - 切换浅色/深色模式支持
- ✅ 响应式设计 - 移动端适配
- ✅ 文章阅读进度条 - 阅读体验优化
- ✅ 分页功能 - 支持文章列表分页
- ✅ 面包屑导航 - 清晰的页面层级导航
src/
├── components/ # 通用组件
│ ├── Header.astro # 头部导航组件
│ ├── Footer.astro # 底部组件
│ ├── ArticleCard.astro # 文章卡片组件
│ └── Pagination.astro # 分页组件
├── layouts/ # 页面布局组件
│ ├── BaseLayout.astro # 基础布局
│ └── BlogLayout.astro # 博客文章布局
├── pages/ # Astro 页面
│ ├── index.astro # 首页
│ ├── about.astro # 关于页面
│ ├── 404.astro # 404页面
│ ├── blog/
│ │ └── [slug].astro # 文章详情页
│ ├── categories/
│ │ ├── index.astro # 分类列表页
│ │ └── [category].astro # 特定分类页
│ └── tags/
│ ├── index.astro # 标签列表页
│ └── [tag].astro # 特定标签页
├── content/ # 存放 Markdown 文章
│ └── blog/
│ ├── hello-world.md
│ ├── javascript-tips.md
│ └── react-hooks-guide.md
├── styles/ # 全局 CSS/Tailwind config
│ └── global.css
├── utils/ # 工具函数
│ └── index.ts # 日期格式化、获取所有文章等
├── types.ts # TypeScript 类型定义
└── config.ts # 站点配置
- 框架: Astro - 现代静态站点生成器
- 样式: Tailwind CSS - 实用优先的 CSS 框架
- 语言: TypeScript - 类型安全的 JavaScript
- 内容: Markdown/MDX - 简单易用的内容格式
- 代码高亮: Shiki - 高质量的语法高亮
- 部署: Vercel - 快速部署平台
npm install
# 或
pnpm installnpm run start
# 或
npm run dev访问 http://localhost:4321 查看博客。
npm run buildnpm run preview- 在
src/content/blog/目录下创建新的.md文件 - 添加 frontmatter 元数据:
---
title: '文章标题'
description: '文章描述'
publishDate: '2024-01-15'
category: '分类名称'
tags: ['标签1', '标签2']
author: '作者名'
heroImage: '/images/hero.jpg' # 可选
---
# 文章内容
这里是文章的正文内容...title: 文章标题(必需)description: 文章描述,用于 SEO(必需)publishDate: 发布日期,格式:YYYY-MM-DD(必需)category: 文章分类(必需)tags: 文章标签数组(必需)author: 作者名称(可选)heroImage: 封面图片路径(可选)updatedDate: 更新日期(可选)draft: 是否为草稿,默认 false(可选)
编辑 src/config.ts 文件来修改站点基本信息:
export const SITE_CONFIG: SiteConfig = {
title: 'Your Blog Title',
description: 'Your blog description',
author: 'Your Name',
url: 'https://yourdomain.com',
social: {
github: 'https://github.com/yourusername',
twitter: 'https://twitter.com/yourusername',
email: '[email protected]'
},
postsPerPage: 10
}编辑 astro.config.mjs 文件来修改 Astro 相关配置。
编辑 src/styles/global.css 文件来修改全局样式。
编辑 tailwind.config.js 文件来自定义 Tailwind CSS 配置。
博客已经针对不同设备进行了优化:
- 桌面端: 完整的布局和功能
- 平板端: 适配中等屏幕尺寸
- 移动端: 优化的移动体验,包括移动导航菜单
博客支持自动深色模式切换:
- 用户可以手动切换主题
- 主题偏好会保存在本地存储中
- 支持系统主题检测
博客已经进行了 SEO 优化:
- 语义化的 HTML 结构
- Meta 标签优化
- Open Graph 支持
- 规范化 URL
- 静态站点生成,加载速度快
- 图片懒加载
- CSS 和 JavaScript 压缩
- 字体优化
- 代码分割
- 将代码推送到 GitHub
- 在 Vercel 中导入项目
- 自动部署完成
博客可以部署到任何支持静态站点的平台:
- Netlify
- GitHub Pages
- Cloudflare Pages
- AWS S3
MIT License
欢迎提交 Issue 和 Pull Request!
- GitHub: @hewitt99
- Email: [email protected]
享受写作的乐趣! ✨