Skip to content

个人作品集搭建

个人作品集网站是展示技能、项目和经历的最佳方式。本教程将指导你使用 VitePress 搭建一个专业的个人作品集网站。

项目概述

你将学到

  • 设计作品集网站结构
  • 创建首页和个人介绍
  • 展示项目作品列表
  • 添加技能和经历时间线
  • 集成联系方式和社交媒体
  • 响应式设计和动效优化

最终效果

portfolio/
├── docs/
│   ├── index.md              # 首页(个人介绍)
│   ├── projects.md           # 项目作品
│   ├── skills.md             # 技能展示
│   ├── experience.md         # 工作经历
│   ├── about.md              # 关于我
│   └── .vitepress/
│       ├── config.mts        # 配置文件
│       └── theme/
│           ├── index.ts      # 主题入口
│           ├── Layout.vue    # 布局组件
│           └── style.css     # 样式文件
└── package.json

项目初始化

创建项目

bash
# 创建项目目录
mkdir my-portfolio
cd my-portfolio

# 初始化 package.json
npm init -y

# 安装 VitePress
npm add -D vitepress

# 创建目录结构
mkdir -p docs/.vitepress/theme
touch docs/index.md
touch docs/projects.md
touch docs/skills.md
touch docs/experience.md
touch docs/about.md

配置文件

ts
// docs/.vitepress/config.mts
import { defineConfig } from 'vitepress'

export default defineConfig({
  title: '张三 | 前端开发者',
  description: '热爱前端开发,专注于 Vue.js 和 Web 性能优化',
  lang: 'zh-CN',
  
  head: [
    ['meta', { name: 'author', content: '张三' }],
    ['meta', { name: 'keywords', content: '前端开发,Vue.js,作品集,简历' }],
    ['link', { rel: 'icon', href: '/favicon.svg' }]
  ],

  themeConfig: {
    logo: '/logo.svg',
    siteTitle: '张三',
    
    nav: [
      { text: '首页', link: '/' },
      { text: '项目', link: '/projects' },
      { text: '技能', link: '/skills' },
      { text: '经历', link: '/experience' },
      { text: '关于', link: '/about' }
    ],

    socialLinks: [
      { icon: 'github', link: 'https://github.com/your-username' },
      { icon: 'linkedin', link: 'https://linkedin.com/in/your-username' },
      { icon: 'twitter', link: 'https://twitter.com/your-username' }
    ],

    footer: {
      copyright: 'Copyright © 2024 张三'
    }
  }
})

首页设计

Hero 区域

markdown
<!-- docs/index.md -->
---
layout: home

hero:
  name: 张三
  text: 前端开发者
  tagline: 5年经验 · Vue.js 专家 · 开源贡献者
  image:
    src: /avatar.svg
    alt: 张三
  actions:
    - theme: brand
      text: 查看项目
      link: /projects
    - theme: alt
      text: 联系我
      link: /about#contact

features:
  - title: Vue.js 开发
    details: 深入理解 Vue 3 Composition API,熟练使用 Pinia、Vue Router 等生态工具
    icon: 🎨
  - title: 性能优化
    details: 专注 Web 性能优化,熟练使用 Lighthouse、WebPageTest 进行性能分析
    icon: ⚡
  - title: 开源贡献
    details: 为 Vue.js、Vite 等开源项目贡献代码,积极参与社区交流
    icon: 🌟
---

<!-- 个人简介 -->
<div class="about-section">
  <h2>关于我</h2>
  <p>
    我是一名拥有 5 年经验的前端开发者,专注于 Vue.js 生态系统和 Web 性能优化。
    热爱开源,相信技术改变生活。曾主导多个大型项目的前端架构设计,
    在性能优化和工程化方面有丰富经验。
  </p>
</div>

<!-- 技能概览 -->
<div class="skills-overview">
  <h2>技能概览</h2>
  <div class="skill-tags">
    <span class="skill-tag primary">Vue.js</span>
    <span class="skill-tag primary">TypeScript</span>
    <span class="skill-tag">React</span>
    <span class="skill-tag">Node.js</span>
    <span class="skill-tag">Vite</span>
    <span class="skill-tag">Webpack</span>
    <span class="skill-tag">CSS/Sass</span>
    <span class="skill-tag">Git</span>
  </div>
</div>

<!-- 最新项目 -->
<div class="featured-projects">
  <h2>精选项目</h2>
  <div class="project-grid">
    <a href="/projects#vue-admin" class="project-card">
      <div class="project-icon">🎯</div>
      <h3>Vue Admin Pro</h3>
      <p>企业级后台管理模板</p>
    </a>
    <a href="/projects#component-lib" class="project-card">
      <div class="project-icon">🎨</div>
      <h3>UI 组件库</h3>
      <p>基于 Vue 3 的组件库</p>
    </a>
    <a href="/projects#cli-tool" class="project-card">
      <div class="project-icon">⚡</div>
      <h3>CLI 工具</h3>
      <p>项目脚手架工具</p>
    </a>
  </div>
</div>

项目展示页

项目列表

markdown
<!-- docs/projects.md -->
---
title: 项目作品
description: 我的项目作品展示
---

# 项目作品

这里展示了我参与开发和维护的主要项目。

## 开源项目

### Vue Admin Pro

<div class="project-header">
  <span class="project-type">开源项目</span>
  <span class="project-status active">维护中</span>
</div>

一个现代化的企业级后台管理模板,基于 Vue 3 + TypeScript + Vite 构建。

**技术栈:** Vue 3、TypeScript、Vite、Pinia、Element Plus

**主要特性:**
- 完整的权限管理系统
- 多标签页路由缓存
- 动态主题配置
- 国际化支持

**链接:** [GitHub](https://github.com/your-username/vue-admin-pro) | [在线预览](https://vue-admin.example.com)

**数据:**
- ⭐ 1.2k Stars
- 🔀 300+ Forks
- 📦 npm 周下载量 5000+

---

### UI 组件库

<div class="project-header">
  <span class="project-type">开源项目</span>
  <span class="project-status active">维护中</span>
</div>

基于 Vue 3 的轻量级组件库,专注于性能和开发体验。

**技术栈:** Vue 3、TypeScript、Vite、Vitest

**主要特性:**
- 30+ 高质量组件
- 完整的 TypeScript 支持
- 单元测试覆盖率 95%+
- 支持 Tree Shaking

**链接:** [GitHub](https://github.com/your-username/ui-lib) | [文档](https://ui-lib.example.com)

---

## 企业项目

### 电商平台前端

<div class="project-header">
  <span class="project-type">企业项目</span>
  <span class="project-status completed">已完成</span>
</div>

某大型电商平台的 PC 端和移动端前端开发。

**技术栈:** Vue 3、Nuxt 3、Pinia、Tailwind CSS

**主要贡献:**
- 负责核心购物流程模块开发
- 优化首屏加载时间 40%
- 实现微前端架构迁移

**成果:**
- 日活用户 100 万+
- 页面加载时间从 3s 降至 1.8s
- 代码覆盖率从 60% 提升至 85%

---

### 数据可视化平台

<div class="project-header">
  <span class="project-type">企业项目</span>
  <span class="project-status completed">已完成</span>
</div>

企业级数据可视化平台,支持自定义图表和仪表盘。

**技术栈:** Vue 3、ECharts、TypeScript、WebSocket

**主要贡献:**
- 设计图表组件系统
- 实现实时数据推送
- 开发拖拽式仪表盘编辑器

**成果:**
- 支持 20+ 图表类型
- 实时数据延迟 < 100ms
- 服务 50+ 企业客户

技能展示页

技能矩阵

markdown
<!-- docs/skills.md -->
---
title: 技能
description: 我的技术技能和工具使用情况
---

# 技能

## 前端开发

### 核心技术

<div class="skill-matrix">
  <div class="skill-item">
    <div class="skill-info">
      <span class="skill-name">Vue.js</span>
      <span class="skill-level expert">专家</span>
    </div>
    <div class="skill-bar">
      <div class="skill-progress" style="width: 95%"></div>
    </div>
    <p class="skill-desc">5年经验,深入理解响应式原理、编译器实现</p>
  </div>
  
  <div class="skill-item">
    <div class="skill-info">
      <span class="skill-name">TypeScript</span>
      <span class="skill-level advanced">高级</span>
    </div>
    <div class="skill-bar">
      <div class="skill-progress" style="width: 85%"></div>
    </div>
    <p class="skill-desc">熟练使用类型体操、泛型编程、类型推断</p>
  </div>
  
  <div class="skill-item">
    <div class="skill-info">
      <span class="skill-name">React</span>
      <span class="skill-level intermediate">中级</span>
    </div>
    <div class="skill-bar">
      <div class="skill-progress" style="width: 70%"></div>
    </div>
    <p class="skill-desc">熟悉 Hooks、状态管理、常用生态库</p>
  </div>
</div>

### CSS & 样式

| 技术 | 熟练度 | 说明 |
|------|--------|------|
| CSS3 | ⭐⭐⭐⭐⭐ | 熟练使用 Flexbox、Grid、动画 |
| Sass/SCSS | ⭐⭐⭐⭐⭐ | 模块化样式、变量、混入 |
| Tailwind CSS | ⭐⭐⭐⭐ | 原子化 CSS、自定义配置 |
| Styled Components | ⭐⭐⭐ | React 生态 CSS-in-JS |

### 构建工具

| 工具 | 熟练度 | 说明 |
|------|--------|------|
| Vite | ⭐⭐⭐⭐⭐ | 熟练配置和插件开发 |
| Webpack | ⭐⭐⭐⭐ | 深入理解打包原理、优化配置 |
| Rollup | ⭐⭐⭐⭐ | 库打包、Tree Shaking |
| esbuild | ⭐⭐⭐ | 极速构建、API 使用 |

## 后端开发

| 技术 | 熟练度 | 说明 |
|------|--------|------|
| Node.js | ⭐⭐⭐⭐ | Express、Koa、中间件开发 |
| Nest.js | ⭐⭐⭐ | 企业级后端框架 |
| 数据库 | ⭐⭐⭐ | MySQL、MongoDB、Redis |

## 工具 & 其他

- **版本控制:** Git、GitHub、GitLab CI/CD
- **代码质量:** ESLint、Prettier、Husky、lint-staged
- **测试:** Vitest、Jest、Playwright、Cypress
- **部署:** Vercel、Netlify、Docker、Nginx
- **设计:** Figma、Sketch、Adobe XD

## 证书 & 认证

- AWS Certified Cloud Practitioner
- Google Analytics Individual Qualification

经历时间线

工作经历

markdown
<!-- docs/experience.md -->
---
title: 工作经历
description: 我的工作经历和教育背景
---

# 工作经历

## 职业生涯

<div class="timeline">
  <div class="timeline-item">
    <div class="timeline-dot"></div>
    <div class="timeline-date">2022.03 - 至今</div>
    <div class="timeline-content">
      <h3>高级前端工程师</h3>
      <p class="company">某科技公司</p>
      <ul>
        <li>主导前端架构设计,推动技术栈升级至 Vue 3</li>
        <li>建立前端规范体系,代码质量提升 40%</li>
        <li>负责团队技术分享和新人培养</li>
      </ul>
    </div>
  </div>
  
  <div class="timeline-item">
    <div class="timeline-dot"></div>
    <div class="timeline-date">2020.06 - 2022.02</div>
    <div class="timeline-content">
      <h3>前端工程师</h3>
      <p class="company">某互联网公司</p>
      <ul>
        <li>负责电商平台核心模块开发</li>
        <li>优化首屏加载性能,提升 35%</li>
        <li>参与微前端架构设计与实现</li>
      </ul>
    </div>
  </div>
  
  <div class="timeline-item">
    <div class="timeline-dot"></div>
    <div class="timeline-date">2019.07 - 2020.05</div>
    <div class="timeline-content">
      <h3>前端开发工程师</h3>
      <p class="company">某创业公司</p>
      <ul>
        <li>从零搭建公司官网和管理后台</li>
        <li>独立完成 H5 营销活动页面开发</li>
        <li>参与产品需求讨论和用户调研</li>
      </ul>
    </div>
  </div>
</div>

## 教育背景

<div class="timeline">
  <div class="timeline-item education">
    <div class="timeline-dot"></div>
    <div class="timeline-date">2015.09 - 2019.06</div>
    <div class="timeline-content">
      <h3>计算机科学与技术</h3>
      <p class="company">某大学 · 本科</p>
      <ul>
        <li>GPA: 3.8/4.0</li>
        <li>获得校级优秀毕业生称号</li>
        <li>ACM 程序设计竞赛银奖</li>
      </ul>
    </div>
  </div>
</div>

## 开源贡献

| 项目 | 贡献类型 | 说明 |
|------|---------|------|
| Vue.js | 代码贡献 | 修复响应式边界情况 bug |
| Vite | 文档贡献 | 完善中文文档 |
| Pinia | Issue/PR | 添加类型声明改进 |
| Element Plus | PR | 修复组件样式问题 |

关于页面

联系方式

markdown
<!-- docs/about.md -->
---
title: 关于我
description: 了解更多关于我的信息
---

# 关于我

## 个人简介

你好!我是张三,一名热爱前端开发的工程师。

我相信技术改变生活,热衷于探索新技术和解决复杂问题。工作之余,我喜欢:

- 📖 阅读技术书籍和博客
- 🏃 跑步和健身
- 🎸 弹吉他
- ✈️ 旅行和摄影

## 联系方式 {#contact}

<div class="contact-grid">
  <a href="mailto:your-email@example.com" class="contact-card">
    <div class="contact-icon">📧</div>
    <div class="contact-info">
      <h4>邮箱</h4>
      <p>your-email@example.com</p>
    </div>
  </a>
  
  <a href="https://github.com/your-username" target="_blank" class="contact-card">
    <div class="contact-icon">💻</div>
    <div class="contact-info">
      <h4>GitHub</h4>
      <p>@your-username</p>
    </div>
  </a>
  
  <a href="https://linkedin.com/in/your-username" target="_blank" class="contact-card">
    <div class="contact-icon">💼</div>
    <div class="contact-info">
      <h4>LinkedIn</h4>
      <p>张三</p>
    </div>
  </a>
  
  <a href="https://twitter.com/your-username" target="_blank" class="contact-card">
    <div class="contact-icon">🐦</div>
    <div class="contact-info">
      <h4>Twitter</h4>
      <p>@your_username</p>
    </div>
  </a>
</div>

## 下载简历

<div class="resume-download">
  <a href="/resume.pdf" class="download-btn" download>
    📄 下载 PDF 简历
  </a>
</div>

## 留言板

欢迎在这里留言,我会尽快回复!

<GiscusComment />

样式定制

自定义 CSS

css
/* docs/.vitepress/theme/style.css */

/* 技能进度条 */
.skill-bar {
  height: 8px;
  background: var(--vp-c-divider);
  border-radius: 4px;
  overflow: hidden;
  margin: 8px 0;
}

.skill-progress {
  height: 100%;
  background: linear-gradient(90deg, var(--vp-c-brand-1), var(--vp-c-brand-2));
  border-radius: 4px;
  transition: width 0.6s ease;
}

/* 时间线 */
.timeline {
  position: relative;
  padding-left: 32px;
}

.timeline::before {
  content: '';
  position: absolute;
  left: 8px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--vp-c-divider);
}

.timeline-item {
  position: relative;
  padding-bottom: 32px;
}

.timeline-dot {
  position: absolute;
  left: -28px;
  top: 4px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--vp-c-brand-1);
  border: 2px solid var(--vp-c-bg);
}

/* 项目卡片 */
.project-card {
  display: block;
  padding: 24px;
  border: 1px solid var(--vp-c-divider);
  border-radius: 12px;
  transition: all 0.3s ease;
}

.project-card:hover {
  border-color: var(--vp-c-brand-1);
  transform: translateY(-4px);
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.1);
}

/* 联系方式网格 */
.contact-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
  margin: 24px 0;
}

.contact-card {
  display: flex;
  align-items: center;
  padding: 16px;
  border: 1px solid var(--vp-c-divider);
  border-radius: 8px;
  transition: all 0.2s ease;
}

.contact-card:hover {
  border-color: var(--vp-c-brand-1);
  background: var(--vp-c-bg-soft);
}

部署上线

Vercel 部署

bash
# 安装 Vercel CLI
npm i -g vercel

# 部署
vercel

GitHub Pages 部署

yaml
# .github/workflows/deploy.yml
name: Deploy Portfolio

on:
  push:
    branches: [main]

jobs:
  deploy:
    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: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: docs/.vitepress/dist

最佳实践

1. 内容真实

  • 真实描述项目经历和贡献
  • 提供可验证的项目链接
  • 数据要准确可查

2. 持续更新

  • 定期更新项目内容
  • 添加新的学习成果
  • 保持技术栈同步

3. 性能优化

  • 压缩图片资源
  • 使用懒加载
  • 优化首屏加载

4. SEO 友好

  • 设置合适的 meta 信息
  • 使用语义化标签
  • 添加结构化数据

相关资源

贡献者

加载中...

想要成为贡献者?

在 CNB 上参与贡献