Astro + React:打造现代化技术博客

最近用 Astro 和 React 搭建了这个技术博客,体验非常不错。相比 WordPress 这种重量级 CMS,Astro 提供了更加轻量和灵活的解决方案。

为什么选择 Astro?

1. 静态生成,性能出色

Astro 默认生成静态 HTML,加载速度极快,SEO 友好。

2. 多框架支持

可以在同一个项目中使用 React、Vue、Svelte 等不同框架的组件。

3. 零 JavaScript 默认

只有需要交互的组件才会加载 JavaScript,大幅减少包体积。

技术栈

// astro.config.mjs
import { defineConfig } from 'astro/config';
import react from '@astrojs/react';

export default defineConfig({
  integrations: [react()],
});
  • Astro 5.14.1 - 静态站点生成器
  • React 18 - 交互组件开发
  • TypeScript - 类型安全
  • Content Collections - Markdown 内容管理

设计理念

采用黑底白字的极简设计,灵感来源于 GitHub Dark 主题:

  • 背景色:#0d1117
  • 主文字:#f0f6fc
  • 链接色:#58a6ff
  • 边框色:#30363d

内容管理

使用 Astro 的 Content Collections 管理博客文章:

// src/content/config.ts
import { defineCollection, z } from 'astro:content';

const blog = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    date: z.date(),
    tags: z.array(z.string()).optional(),
    draft: z.boolean().optional(),
  }),
});

React 组件集成

在 Astro 中使用 React 组件非常简单:

---
import BlogCard from '../components/BlogCard.tsx';
---

<BlogCard post={post} client:load />

总结

Astro + React 的组合提供了:

  • 出色的开发体验
  • 优秀的性能表现
  • 灵活的组件架构
  • 简单的内容管理

对于技术博客来说,这是一个理想的技术选型。