标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
文章目录
🚀前言
在数字化时代,图书管理系统作为信息管理的重要工具,广泛应用于图书馆、学校和个人图书收藏等场景。一个高效的图书管理系统不仅可以帮助用户方便地管理书籍信息,还能提供良好的用户体验和数据查询能力。随着前端技术的发展,构建这样一个系统变得更加轻松和高效。
🚀一、案例:简单的图书管理系统
🔎1.项目准备
首先,使用 Vite 创建一个 Vue 项目,并安装必要的依赖项:
npm create vite@latest book-management --template vue
cd book-management
npm install
npm install pinia vue-router
🔎2.目录结构
创建以下目录和文件结构:
- src/
- components/
- BookList.vue
- AddBook.vue
- EditBook.vue
- router/
- index.js
- stores/
- bookStore.js
- main.js
- App.vue
- components/
🔎3.配置 Pinia
在 src/stores/bookStore.js
文件中,编写 Pinia 状态管理逻辑:
import { defineStore } from 'pinia';
import { ref } from 'vue';
export const useBookStore = defineStore('book', () => {
// 存储图书信息的数组
const books = ref([]);
// 添加图书的方法
const addBook = (book) => {
books.value.push(book);
};
// 编辑图书的方法
const editBook = (index, updatedBook) => {
books.value[index] = updatedBook;
};
// 删除图书的方法
const deleteBook = (index) => {
books.value.splice(index, 1);
};
return { books, addBook, editBook, deleteBook };
});
🔎4.创建组件
🦋4.1 BookList.vue
在 src/components/BookList.vue
文件中,编写用于显示图书列表的组件:
<script setup>
import { useBookStore } from '../stores/bookStore';
const bookStore = useBookStore();
</script>
<template>
<div>
<h1>图书列表</h1>
<ul>
<li v-for="(book, index) in bookStore.books" :key="index">
{{ book.title }} - {{ book.author }}
<button @click="() => $router.push(`/edit/${index}`)">编辑</button>
<button @click="() => bookStore.deleteBook(index)">删除</button>
</li>
</ul>
<router-link to="/add">添加图书</router-link>
</div>
</template>
🦋4.2 AddBook.vue
在 src/components/AddBook.vue
文件中,编写用于添加图书信息的组件:
<script setup>
import { useBookStore } from '../stores/bookStore';
import { ref } from 'vue';
import { useRouter } from 'vue-router';
const store = useBookStore();
const router = useRouter();
const book = ref({ title: '', author: '' });
const addBook = () => {
store.addBook(book.value);
router.push('/');
};
</script>
<template>
<div>
<h1>添加图书</h1>
<form @submit.prevent="addBook">
<label>书名: <input v-model="book.title" /></label>
<label>作者: <input v-model="book.author" /></label>
<button type="submit">提交</button>
</form>
<router-link to="/">返回图书列表</router-link>
</div>
</template>
🦋4.3 EditBook.vue
在 src/components/EditBook.vue
文件中,编写用于编辑图书信息的组件:
<script setup>
import { useBookStore } from '../stores/bookStore';
import { ref, onMounted } from 'vue';
import { useRouter, useRoute } from 'vue-router';
const route = useRoute();
const router = useRouter();
const store = useBookStore();
const bookIndex = ref("");
const book = ref({ title: '', author: '' });
onMounted(() => {
bookIndex.value = route.params.index;
book.value = { ...store.books[bookIndex.value] };
});
const editBook = () => {
store.editBook(bookIndex.value, book.value);
router.push('/');
};
</script>
<template>
<div>
<h1>编辑图书</h1>
<form @submit.prevent="editBook">
<label>书名: <input v-model="book.title" /></label>
<label>作者: <input v-model="book.author" /></label>
<button type="submit">提交</button>
</form>
<router-link to="/">返回图书列表</router-link>
</div>
</template>
🔎5.配置路由
在 src/router/index.js
文件中,配置 Vue Router:
import { createRouter, createWebHistory } from 'vue-router';
import BookList from '../components/BookList.vue';
import AddBook from '../components/AddBook.vue';
import EditBook from '../components/EditBook.vue';
const routes = [
{ path: '/', component: BookList },
{ path: '/add', component: AddBook },
{ path: '/edit/:index', component: EditBook },
];
const router = createRouter({
history: createWebHistory(),
routes,
});
export default router;
🔎6.配置入口文件
在 src/main.js
文件中,配置应用的入口文件:
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import { createPinia } from 'pinia';
const app = createApp(App);
app.use(router);
app.use(createPinia());
app.mount('#app');
🔎7.运行项目
确保所有文件保存后,运行以下命令启动开发服务器:
npm run dev
通过本项目,我们学习了如何使用 Vue、Pinia、Vue Router 和 Vite 来创建一个简单的图书管理系统。在实际项目中,我们还需要考虑更多的细节和功能,读者可以通过进一步学习完成这个系统。