2026-09-23 教程Astro前端

用 Astro 搭一个个人网站:从零到上线

记录这个站点是怎么搭起来的。包含目录结构、内容组织方式,以及踩过的两个坑。

这篇文章记录站点搭建的完整过程,方便以后重装环境时照着做。

一、初始化项目

npm create astro@latest my-site
cd my-site
npm run dev

打开 http://localhost:4321 就能看到页面了。

二、目录结构

my-site/
├── src/
│   ├── content/
│   │   ├── articles/      # 文章,一个 .md 一个文件
│   │   └── works/         # 作品
│   ├── layouts/
│   │   └── Base.astro     # 公共骨架:导航 + 页脚
│   ├── pages/
│   │   ├── index.astro    # 首页
│   │   ├── articles/      # 列表页 + 详情页
│   │   ├── works.astro
│   │   └── about.astro
│   ├── styles/
│   │   └── global.css     # 全站样式
│   └── content.config.ts  # 内容字段定义
└── astro.config.mjs

关键点是 src/pages/ 里的文件路径直接对应网址。pages/about.astro 就是 /about。

三、文章怎么加

在 src/content/articles/ 里新建一个 .md 文件,开头写元信息:

---
title: 文章标题
date: 2026-09-23
summary: 一句话摘要,会显示在列表里
tags: [随笔]
---

正文从这里开始。

保存后页面自动出现。不需要后台,不需要登录。

四、踩过的两个坑

坑一:日期排序错了。 date 是字符串,直接用 a.date > b.date 排序在某些格式下会出错。要转成时间戳:

posts.sort((a, b) => +new Date(b.data.date) - +new Date(a.data.date));

坑二:详情页路由不匹配。 动态路由的文件名必须是 [...slug].astro,不是 [slug].astro,否则嵌套路径会 404。

五、下一步

  • 换成自己的配色和字体
  • 加 RSS 和 sitemap
  • 绑域名、开 HTTPS

做完这些,一个能用的个人站就有了。

← 学习笔记:把知识讲给自己听 序章:这个网站为什么存在 →
返回列表