1098 字
5 分钟

Astro 博客搭建教程:框架选择与项目初始化完整指南

1. 技术选型#

个人博客框架大致分为两类:

  1. 静态博客:例如 Astro、Hugo
  2. 动态博客:例如 WordPress,或者自己编写 Spring Boot + Vue / React

当然也可以在CSDN、稀土掘金之类的平台上直接上传文档。

静态博客和动态博客的运行方式完全不同:静态博客在写完文章后,通过构建生成静态HTML页面;动态博客则在每次访问时实时从服务器或数据库获取内容并渲染页面。以下是静态博客和动态博客的简单比较

静态博客和动态博客的优缺点#

静态博客动态博客
性能✅ 访问速度快❌ 每次请求需查询数据库和渲染,速度可能较慢
成本✅ 服务器要求低,可直接托管在平台❌ 对服务器性能有一定要求
安全✅ 无后端服务,注入风险低⚠️ 若配置不当,可能存在 SQL 注入或其他安全风险
维护✅ 更新文章只需上传文件,可结合 Git 自动构建❌ 需要维护数据库及相关服务
功能⚠️ 无动态能力,评论、用户登录需第三方支持✅ 功能更丰富,可实现用户交互

基于个人网站的需求和机器性能的限制,本文选择使用Astro作为博客框架

2. 选择主题#

Astro 官网的“资源-主题”页签页面提供大量免费和付费主题。
当然你也可以在其他推荐博文寻找合适主题,例如:

大部分主题的 GitHub 仓库都会提供部署好的 Demo 页面,方便预览效果。

本站使用的主题是Fuwari

saicaca
/
fuwari
Waiting for api.github.com...
00K
0K
0K
Waiting...

3. 构建项目#

第一步:fork上述的Fuwari项目#

image-20260331162836865 image-20260331163013789

第二步:使用VSCode或者Webstorm将仓库克隆到本地#

Terminal window
git clone https://github.com/your-username/fuwari.git

第三步:安装依赖#

Terminal window
# 安装pnpm,如果已安装 pnpm 可跳过此步骤
npm install -g pnpm
# 安装依赖
pnpm install

第四步:启动项目#

Terminal window
pnpm dev

image-20260331164355107

这个时候就可以打开 http://localhost:4321/查看初试页面效果了

4. 修改配置#

src/config.ts
import type {
ExpressiveCodeConfig,
LicenseConfig,
NavBarConfig,
ProfileConfig,
SiteConfig,
} from "./types/config";
import { LinkPreset } from "./types/config";
// 网站基本信息配置
export const siteConfig: SiteConfig = {
title: "Fuwari", // 网站的标题
subtitle: "Demo Site", // 网站的二级标题
lang: "en", // 网站的使用语言
themeColor: {
hue: 250, // 默认主题色
fixed: false, // fixed为true则隐藏调整主题色的选择器
},
// 主页图片相关
banner: {
enable: false, // 是否启用主页图片
src: "assets/images/demo-banner.png", // 主页图文件路径,基于src文件夹
position: "center", // 显示方式,可选项为:'top', 'center', 'bottom'。'center'为默认选项
credit: {
enable: false, // 显示图片的版权信息
text: "", // 版权信息文本
url: "", // 点击版权信息文本后跳转到的地址
},
},
toc: {
enable: true, // 博文右侧是否显示目录
depth: 2, // 目录层级
},
// 网站图标
favicon: [
// 置空则显示默认图标
// {
// src: '/favicon/icon.png', // 网站图标图文件路径,基于public文件夹
// theme: 'light', // (可选项) 可选项:'light' or 'dark', 仅在需要在亮色和暗色模式显示不同图标时配置
// sizes: '32x32', // (可选项) 网站图标尺寸
// }
],
};
// 导航栏配置
export const navBarConfig: NavBarConfig = {
links: [
LinkPreset.Home,
LinkPreset.Archive,
LinkPreset.About,
// 链接
{
name: "GitHub",
url: "https://github.com/saicaca/fuwari",
external: true, // 外部链接or内部链接
},
],
};
// 个人信息配置
export const profileConfig: ProfileConfig = {
avatar: "assets/images/demo-avatar.png", // 头像图片地址。基于src文件夹
name: "Lorem Ipsum", // 昵称
bio: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", // 个人简介
// 配置个人信息下方显示的链接
links: [
{
name: "Twitter", // 链接名称
icon: "fa6-brands:twitter", // 链接图标,可以在https://icones.js.org找到更多的icon
url: "https://twitter.com", // 链接地址
},
{
name: "Steam",
icon: "fa6-brands:steam",
url: "https://store.steampowered.com",
},
{
name: "GitHub",
icon: "fa6-brands:github",
url: "https://github.com/saicaca/fuwari",
},
],
};
// 博文下方的许可协议配置
export const licenseConfig: LicenseConfig = {
enable: true,
name: "CC BY-NC-SA 4.0",
url: "https://creativecommons.org/licenses/by-nc-sa/4.0/",
};
// markdown代码框主题配置
export const expressiveCodeConfig: ExpressiveCodeConfig = {
theme: "github-dark",
};

重启项目后即可查看修改的内容

Astro 博客搭建教程:框架选择与项目初始化完整指南
https://yuumiblog.com/posts/blogbuild/blogbuildnote02/
作者
悠米的开发笔记
发布于
2025-10-10
许可协议
CC BY-NC-SA 4.0