当前位置:首页 > VUE

vue 实现blog

2026-01-12 10:50:19VUE

Vue 实现博客系统

项目初始化

使用 Vue CLI 创建项目,确保已安装 Node.js 和 npm/yarn。
运行命令初始化项目:

vue create vue-blog
cd vue-blog
npm install vue-router axios

路由配置

src/router/index.js 中配置路由:

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import PostList from '../views/PostList.vue'
import PostDetail from '../views/PostDetail.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/posts', component: PostList },
  { path: '/posts/:id', component: PostDetail }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

博客文章组件

创建 PostList.vue 显示文章列表:

<template>
  <div>
    <h2>文章列表</h2>
    <ul>
      <li v-for="post in posts" :key="post.id">
        <router-link :to="`/posts/${post.id}`">{{ post.title }}</router-link>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      posts: [
        { id: 1, title: 'Vue入门', content: 'Vue基础内容...' },
        { id: 2, title: 'Vue路由', content: '路由配置方法...' }
      ]
    }
  }
}
</script>

文章详情组件

创建 PostDetail.vue 显示单篇文章:

vue 实现blog

<template>
  <div>
    <h2>{{ post.title }}</h2>
    <p>{{ post.content }}</p>
    <router-link to="/posts">返回列表</router-link>
  </div>
</template>

<script>
export default {
  data() {
    return {
      post: {}
    }
  },
  created() {
    const postId = this.$route.params.id
    // 实际项目中应从API获取数据
    this.post = { 
      id: postId, 
      title: `文章${postId}`, 
      content: `这是文章${postId}的内容...` 
    }
  }
}
</script>

状态管理(可选)

对于复杂博客系统,可使用 Vuex 管理状态:

npm install vuex

创建 src/store/index.js

vue 实现blog

import { createStore } from 'vuex'

export default createStore({
  state: {
    posts: [
      { id: 1, title: 'Vue入门', content: 'Vue基础内容...' },
      { id: 2, title: 'Vue路由', content: '路由配置方法...' }
    ]
  },
  getters: {
    getPostById: (state) => (id) => {
      return state.posts.find(post => post.id === Number(id))
    }
  }
})

样式与布局

使用 CSS 或 UI 框架(如 Element Plus)美化界面:

npm install element-plus

main.js 中引入:

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

createApp(App).use(router).use(store).use(ElementPlus).mount('#app')

部署上线

构建生产环境代码并部署:

npm run build

将生成的 dist 文件夹内容上传至服务器或静态托管服务(如 Netlify、Vercel)。

标签: vueblog
分享给朋友:

相关文章

vue实现滚动中断

vue实现滚动中断

Vue 实现滚动中断的方法 在 Vue 中实现滚动中断通常涉及监听滚动事件,并在特定条件下阻止默认行为或停止滚动。以下是几种常见方法: 监听滚动事件并阻止默认行为 通过 @scroll 或 @wh…

vue实现放大效果

vue实现放大效果

使用 CSS transform 实现放大效果 在 Vue 中实现放大效果可以通过 CSS 的 transform: scale() 属性。这种方法简单高效,适合大多数交互场景。 定义一个 CSS…

vue实现多层评论回复

vue实现多层评论回复

Vue 实现多层评论回复 数据结构设计 多层评论通常采用嵌套结构,每个评论对象包含子评论数组。示例数据结构如下: comments: [ { id: 1, content: '父…

vue实现微博印象

vue实现微博印象

实现微博印象功能的核心思路 微博印象功能通常指用户发布微博后,系统自动分析文本内容并提取关键词或标签,以可视化形式展示。Vue实现该功能需要结合文本分析、关键词提取和前端渲染技术。 文本分析与关键…

vue实现弹窗可切换

vue实现弹窗可切换

实现弹窗可切换的 Vue 方案 动态组件切换 通过 Vue 的 <component :is="currentComponent"> 动态加载不同弹窗组件,结合 v-if 控制显示状态。…

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Rout…