个人作品集网站技术实现
前端AstroReactTailwind CSS
个人作品集网站技术实现
从零构建一个现代化的个人作品集网站,使用 Astro、React、Tailwind CSS 等技术栈。
目录
技术栈选择
核心框架
- Astro 6.x:现代化的静态站点生成器,支持 Partial Hydration(部分水合),实现首屏快速加载
- React 19:用于构建交互式组件,如主题切换开关
- Tailwind CSS 4.x:实用优先的 CSS 框架,简化样式开发
辅助工具
- MDX:支持在 Markdown 中使用 React 组件
- Shiki:代码语法高亮
- GitHub Actions:CI/CD 自动化部署
- GitHub Pages:免费的静态网站托管
项目结构
WebPage/
├── public/ # 静态资源
├── src/
│ ├── components/ # 可复用组件
│ │ ├── icons/ # 图标组件
│ │ ├── layout/ # 布局组件
│ │ ├── blog/ # 博客相关组件
│ │ ├── projects/ # 项目相关组件
│ │ └── ui/ # UI 组件
│ ├── content/ # 内容集合
│ │ ├── blog/ # 博客文章
│ │ └── projects/ # 项目文档
│ ├── layouts/ # 页面布局
│ ├── pages/ # 页面组件
│ ├── styles/ # 全局样式
│ └── config.ts # 站点配置
├── docs/ # 文档
└── package.json # 项目依赖
核心功能实现
1. 响应式布局
使用 Tailwind CSS 的响应式类实现不同屏幕尺寸的适配:
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3">
<!-- 照片网格 -->
</div>
2. 主题切换系统
- 实现原理:使用 localStorage 存储用户主题偏好,结合 CSS 类切换实现
- 技术细节:
- 服务端渲染时通过内联脚本设置初始主题,避免闪烁
- 客户端使用 React 组件实现交互式切换
- 暗色模式下自动调整背景、文字颜色和背景光晕
3. 内容管理系统
使用 Astro 的内容集合(Content Collections)管理博客和项目:
// src/content/config.ts
import { defineCollection, z } from 'astro:content';
const blogCollection = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.date(),
tags: z.array(z.string()),
}),
});
export const collections = {
blog: blogCollection,
};
4. 代码高亮
使用 Shiki 实现代码语法高亮,支持多种主题:
---
// astro.config.mjs
import { defineConfig } from 'astro/config';
export default defineConfig({
markdown: {
shikiConfig: {
theme: 'github-dark',
},
},
});
---
部署方案
GitHub Pages
- 配置
astro.config.mjs:
export default defineConfig({
site: 'https://yourusername.github.io',
base: '/your-repo-name',
});
- 创建 GitHub Actions 工作流:
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build
- uses: actions/upload-pages-artifact@v3
with:
path: ./dist
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/deploy-pages@v4
结语
个人作品集网站是展示技术能力和项目经验的重要窗口。选择合适的技术栈(Astro + React + Tailwind CSS)可以让开发者专注于内容而不是配置,快速搭建一个现代化、高性能的作品集网站。
关键要点:技术栈服务于内容,不是炫技。Astro + React + Tailwind CSS 是最佳组合,让开发者专注于内容而不是配置。