一个基于 Astro 框架构建的现代化、高性能静态博客主题,名为 "Wing",意为 "月光下的过客"。
Wing Blog 是一个轻量级、高性能的静态博客主题,功能完整、结构清晰的 Astro 博客模板,适合用于搭建个人博客网站。 采用现代化的设计理念和技术栈,提供了丰富的功能和灵活的配置选项。它专为喜欢简洁、优雅设计的博主打造,同时保持了良好的扩展性和可定制性。它具有现代化的设计风格、良好的性能和可扩展性,可以根据需要进行自定义配置和功能扩展。
- 框架: Astro 5.16.9
- 内容格式: Markdown + MDX
- 样式: Tailwind CSS 4.1.18
- 构建工具: Vite
- 类型检查: TypeScript
- RSS 生成: @astrojs/rss
- 站点地图: @astrojs/sitemap
- 部署支持: @astrojs/vercel
- 评论系统: Artalk + Giscus
- 日期路由: 按发布日期生成
{yyyymmdd}.html格式的URL,无需/blog/前缀 - 文章列表: 支持分页显示(默认每页5篇)
- 阅读时间: 基于
reading-time自动计算并显示阅读时长 - RSS & Sitemap: 自动生成,便于搜索引擎收录和订阅
- Markdown/MDX 支持: 支持两种格式的文章编写,提供丰富的内容创作能力
- 现代化 UI: 采用简洁、优雅的设计风格
- 响应式设计: 完美适配各种设备尺寸
- 深色/浅色主题: 自动切换,支持用户点击头像手动切换并持久化
- 视图过渡: 共享元素动画(标题/卡片/日期),流畅的页面切换效果
- Tailwind CSS 4: 利用最新的 Tailwind CSS 4 特性,包括动画变量
- 评论系统: 支持 Artalk(默认)和 Giscus 两种评论系统,可自由切换
- 评论开关: 支持在文章级别控制评论开关
- 社交分享: 内置社交网络链接配置
- 集中式配置: 所有站点配置集中在
src/config.ts中,便于管理和修改 - 灵活的导航: 支持自定义导航菜单
- 文章元数据: 支持丰富的文章元数据,包括标题、描述、发布日期、更新日期、封面图片等
- 首页:最新文章列表
- 归档页:所有文章按时间排序
- 友链页:展示友情链接
- 友圈页:社交网络功能
- 关于页:博主信息
- RSS 订阅:提供文章订阅功能
npm installnpm run dev访问 http://localhost:4321 查看效果
npm run buildnpm run previewWing/
├── src/
│ ├── assets/ # 静态资源文件(图片、图标等)
│ ├── components/ # 可复用组件
│ │ ├── ArtalkComment.astro # Artalk 评论组件
│ │ ├── BaseHead.astro # 页面头部基础组件
│ │ ├── Footer.astro # 页脚组件
│ │ ├── FormattedDate.astro # 格式化日期组件
│ │ ├── GiscusComment.astro # Giscus 评论组件
│ │ ├── Header.astro # 头部导航组件
│ │ ├── HeaderLink.astro # 导航链接组件
│ │ ├── Pagination.astro # 分页组件
│ │ ├── PostsLists.astro # 文章列表组件
│ │ ├── SkillsScroll.astro # 技能滚动组件
│ │ └── comment.astro # 评论系统入口组件
│ ├── config/ # 配置文件
│ │ └── links.ts # 友链配置
│ ├── content/ # 博客文章内容
│ │ └── blog/ # Markdown/MDX 文章
│ ├── layouts/ # 页面布局
│ │ ├── BaseLayout.astro # 基础布局
│ │ └── PostLayout.astro # 文章布局
│ ├── pages/ # 页面组件
│ │ ├── blog/ # 博客相关页面
│ │ ├── page/ # 分页相关页面
│ │ ├── [slug].astro # 日期路由页面
│ │ ├── about.astro # 关于页面
│ │ ├── archive.astro # 归档页面
│ │ ├── blog.astro # 博客列表页面
│ │ ├── circle.astro # 友圈页面
│ │ ├── index.astro # 首页
│ │ ├── links.astro # 友链页面
│ │ └── rss.xml.js # RSS 生成页面
│ ├── styles/ # 样式文件
│ │ ├── artalk.css # Artalk 评论样式
│ │ └── global.css # 全局样式
│ ├── utils/ # 工具函数
│ │ ├── artalk.js # Artalk 配置
│ │ └── dataFormatte.ts # 数据格式化工具
│ ├── config.ts # 站点主配置
│ └── content.config.ts # 内容配置
├── public/ # 公共静态资源
│ ├── fonts/ # 字体文件
│ ├── artalk.js # Artalk 脚本
│ └── favicon.svg # 网站图标
├── .astro/ # Astro 生成的文件(自动生成,无需修改)
├── dist/ # 构建输出目录(自动生成)
├── astro.config.mjs # Astro 配置
├── package.json # 项目依赖和脚本
├── pnpm-lock.yaml # pnpm 锁文件
└── tsconfig.json # TypeScript 配置
- src/config.ts : 站点配置、导航菜单、分页设置、社交网络链接等
- src/content.config.ts : 博客文章元数据 schema 定义
- astro.config.mjs : Astro 框架配置
- package.json : 项目依赖和脚本
所有站点配置集中在 src/config.ts 文件中,主要包括:
- 站点基本信息: 标题、描述、URL、头像、作者等
- 导航菜单: 自定义导航链接和图标
- 分页配置: 每页显示的文章数量
- 社交网络: 配置各种社交平台链接
- 评论系统: Artalk 和 Giscus 的配置
每篇文章需要在头部添加元数据,示例:
title: "文章标题"
description: "文章描述"
pubDate: "2023-01-01"
updatedDate: "2023-01-02" # 可选
heroImage: "/images/hero.jpg" # 可选在 src/config.ts 中可以配置默认使用的评论系统,目前支持:
- Artalk: 轻量级、自托管的评论系统
- Giscus: 基于 GitHub Discussions 的评论系统
文章存储在 src/content/blog/ 目录下,支持 .md 和 .mdx 格式。
文章默认使用日期路由,格式为 {yyyymmdd}.html,例如:
- 发布日期为 2023-01-01 的文章,URL 为
/20230101.html
目前主题支持通过文件夹结构进行简单的分类管理,文章会根据其所在的文件夹自动分类。
使用 Tailwind CSS 4,可以通过修改 tailwind.config.js(如需要)和组件中的类名来定制样式。
支持通过 CSS 变量定制主题颜色,主要颜色定义在 src/styles/global.css 文件中。
可以通过修改 src/components/ 目录下的组件来定制页面元素和功能。
项目已配置 @astrojs/vercel 集成,可以直接部署到 Vercel:
- 将代码推送到 GitHub 仓库
- 在 Vercel 中导入该仓库
- 按照提示完成部署配置
- 部署完成后,访问生成的域名即可
可以使用 npm run build 构建生产版本,然后将 dist/ 目录下的文件部署到任何静态文件服务器上。
- 静态生成: 所有页面都在构建时生成,提供最快的访问速度
- 按需加载: 组件和资源按需加载,减少初始加载时间
- 图片优化: 支持自动图片优化
- CSS 优化: Tailwind CSS 自动移除未使用的样式
欢迎提交 Issue 和 Pull Request 来帮助改进这个项目!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
MIT License - 查看 LICENSE 文件了解详情
- Astro - 现代化的静态站点生成器
- Tailwind CSS - 实用优先的 CSS 框架
- Artalk - 轻量级评论系统
- Giscus - 基于 GitHub Discussions 的评论系统
- Wing - Wing主题作者
如有问题或建议,欢迎通过以下方式联系:
- GitHub: panjinye/FicorWing
- Email: ficor@qq.com(请在
src/config.ts中修改为实际邮箱)
Wing Blog - 月光下的过客,记录生活的点点滴滴 📝
