基于vue实现个人博客
技术选型与准备
Vue 3 + Composition API:采用最新版本Vue框架,搭配Composition API提升代码组织性。
Vite构建工具:快速启动项目,支持热更新和高效打包。
Vue Router:实现前端路由管理,支持动态路由和导航守卫。
Pinia状态管理:替代Vuex,提供更简洁的状态管理方案。
Markdown解析:使用marked或markdown-it解析文章内容。
UI库:可选Element Plus或Naive UI,快速搭建后台管理界面。
项目结构设计
src/
├── assets/ # 静态资源
├── components/ # 公共组件
│ ├── ArticleCard.vue # 文章卡片
│ └── MarkdownRender.vue # Markdown渲染器
├── stores/ # Pinia状态管理
│ └── articles.js # 文章数据管理
├── views/ # 页面级组件
│ ├── Home.vue # 首页
│ ├── ArticleDetail.vue # 文章详情
│ └── Admin.vue # 后台管理
├── router/ # 路由配置
│ └── index.js
└── App.vue # 根组件
核心功能实现
文章列表与详情
通过Pinia管理文章数据,使用axios对接后端API或本地Mock数据。动态路由匹配文章ID:

// router/index.js
{
path: '/article/:id',
component: ArticleDetail,
props: true
}
Markdown渲染组件
安装marked并创建自定义组件:
<template>
<div class="markdown-body" v-html="compiledMarkdown"></div>
</template>
<script setup>
import { marked } from 'marked';
const props = defineProps({ content: String });
const compiledMarkdown = computed(() => marked(props.content));
</script>
后台管理功能
文章编辑与发布
使用v-model绑定表单数据,结合<textarea>或富文本编辑器(如Tiptap)。提交时调用Pinia的action:

// stores/articles.js
export const useArticleStore = defineStore('articles', {
actions: {
async addArticle(article) {
this.articles.unshift(article); // 本地模拟
// await axios.post('/api/articles', article); // 实际对接后端
}
}
});
样式与优化
主题与响应式
采用CSS变量定义主题色,搭配媒体查询实现响应式布局:
:root {
--primary-color: #42b983;
}
@media (max-width: 768px) {
.article-card { width: 100%; }
}
SEO优化
使用vue-meta或@unhead/vue管理页面元信息:
useHead({
title: '我的博客',
meta: [{ name: 'description', content: '基于Vue的个人博客' }]
});
部署方案
- 静态托管:打包后部署到Vercel/Netlify,配置SPA重定向规则。
- 服务端渲染:如需SEO增强,可迁移至Nuxt.js框架。
- Docker化:若需后端接口,可编写Dockerfile与Nginx配置整合部署。
扩展建议
- 评论系统:集成Gitalk或自建API
- 标签分类:在Pinia中增加分类状态管理
- 性能监控:接入Sentry或Lighthouse CI
通过以上步骤可构建一个功能完整的Vue博客系统,实际开发中需根据需求调整技术栈和功能模块。






