编程 Vue3构建一个简单的博客架构,包括文章列表和文章详情页面

2024-11-19 09:55:34 +0800 CST views 928

使用 Vue 3 实现一个简单的博客架构,包含文章列表和文章详情

随着现代 web 开发的不断推进,Vue 3 作为一个渐进式框架,因其简洁易学、响应式强大而广受欢迎。在这篇博客中,我们将使用 Vue 3 实现一个简单的博客架构,包含文章列表和文章详情页面。我们将借助 Vue 3 的 setup 语法糖,使得代码更加简洁,易于维护。

项目结构

在开始之前,我们需要确定项目的基本结构。为了保持简洁,我们将主要有以下几个组件:

  • App.vue — 应用的主组件
  • ArticleList.vue — 文章列表组件
  • ArticleDetail.vue — 文章详情组件

安装 Vue 3

首先,你需要创建一个新的 Vue 3 项目。你可以使用 Vue CLI 来快速创建项目:

npm install -g @vue/cli
vue create simple-blog
cd simple-blog

选择 Vue 3 配置,安装完成后进入项目目录。

创建组件

1. App.vue

在根组件 App.vue 中,我们将设置基本路由结构。使用 Vue Router 进行页面的切换。

<template>
  <div id="app">
    <nav>
      <router-link to="/">文章列表</router-link>
    </nav>
    <router-view />
  </div>
</template>

<script setup>
import { defineComponent } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import ArticleList from './components/ArticleList.vue'
import ArticleDetail from './components/ArticleDetail.vue'

const routes = [
  { path: '/', component: ArticleList },
  { path: '/article/:id', component: ArticleDetail },
]

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

export default defineComponent({
  setup() {
    return { router }
  }
})
</script>

<style>
nav {
  padding: 1rem;
  background-color: #f8f9fa;
}
nav a {
  margin: 0 1rem;
  text-decoration: none;
}
</style>

2. ArticleList.vue

ArticleList.vue 中,我们将展示一个简单的文章列表。通过使用 refcomputed 来管理和显示文章数据。

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

<script setup>
import { ref } from 'vue'

const articles = ref([
  { id: 1, title: '第一篇文章' },
  { id: 2, title: '第二篇文章' },
  { id: 3, title: '第三篇文章' },
])
</script>

<style>
ul {
  list-style-type: none;
  padding: 0;
}
</style>

3. ArticleDetail.vue

ArticleDetail.vue 中,我们将根据文章 ID 显示相应的文章详细信息。我们将使用 useRoute 钩子来获取路由参数。

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

<script setup>
import { ref, onMounted } from 'vue'
import { useRoute } from 'vue-router'

const articles = [
  { id: 1, title: '第一篇文章', content: '这是第一篇文章的内容。' },
  { id: 2, title: '第二篇文章', content: '这是第二篇文章的内容。' },
  { id: 3, title: '第三篇文章', content: '这是第三篇文章的内容。' },
]

const route = useRoute()
const article = ref({})

onMounted(() => {
  const articleId = parseInt(route.params.id)
  article.value = articles.find(a => a.id === articleId) || {}
})
</script>

<style>
h1 {
  margin-top: 20px;
}
</style>

路由配置

在上述代码中,我们在 App.vue 中创建了路由以管理不同的视图。在实际的应用中,你可能需要安装 Vue Router。你可以运行 npm install vue-router@4 来安装它。

启动项目

现在,经过以上步骤,我们已经完成了简单的博客架构。接下来,启动项目:

npm run serve

在浏览器中打开 http://localhost:8080,你将看到文章列表,点击文章标题可以跳转到文章详情页。

总结

通过使用 Vue 3 的 setup 语法糖,我们能够快速构建一个简单的博客架构。在这个例子中,我们展示了如何使用 Vue Router 管理路由,以及如何使用响应式数据展示文章列表和详情。

当然,以上的结构非常基础,随着你对 Vue 的深入了解,你可以添加更多的功能,比如评论系统、文章创建、删除等操作。

复制全文 生成海报 前端开发 Vue Web应用

推荐文章

解决python “No module named pip”
2024-11-18 11:49:18 +0800 CST
Vue3中如何处理组件间的动画?
2024-11-17 04:54:49 +0800 CST
PHP 8.4 中的新数组函数
2024-11-19 08:33:52 +0800 CST
解决 PHP 中的 HTTP 请求超时问题
2024-11-19 09:10:35 +0800 CST
一个简单的html卡片元素代码
2024-11-18 18:14:27 +0800 CST
go命令行
2024-11-18 18:17:47 +0800 CST
Vue3中如何进行性能优化?
2024-11-17 22:52:59 +0800 CST
百度开源压测工具 dperf
2024-11-18 16:50:58 +0800 CST
使用临时邮箱的重要性
2025-07-16 17:13:32 +0800 CST
Rust 并发执行异步操作
2024-11-18 13:32:18 +0800 CST
Nginx 反向代理
2024-11-19 08:02:10 +0800 CST
如何在Vue 3中使用Ref访问DOM元素
2024-11-17 04:22:38 +0800 CST
Go 接口:从入门到精通
2024-11-18 07:10:00 +0800 CST
PHP 代码功能与使用说明
2024-11-18 23:08:44 +0800 CST
java MySQL如何获取唯一订单编号?
2024-11-18 18:51:44 +0800 CST
Hypothesis是一个强大的Python测试库
2024-11-19 04:31:30 +0800 CST
Vue中的`key`属性有什么作用?
2024-11-17 11:49:45 +0800 CST
Go语言中的`Ring`循环链表结构
2024-11-19 00:00:46 +0800 CST
Flet 构建跨平台应用的 Python 框架
2025-03-21 08:40:53 +0800 CST
Requests库详细介绍
2024-11-18 05:53:37 +0800 CST
Rust 高性能 XML 读写库
2024-11-19 07:50:32 +0800 CST
MySQL用命令行复制表的方法
2024-11-17 05:03:46 +0800 CST
Python上下文管理器:with语句
2024-11-19 06:25:31 +0800 CST
一个简单的打字机效果的实现
2024-11-19 04:47:27 +0800 CST
程序员茄子在线接单