当前位置:首页 > VUE

vue实现图书购买系统

2026-01-23 03:06:18VUE

Vue实现图书购买系统

项目结构设计

使用Vue CLI或Vite初始化项目,推荐目录结构:

  • src/components/ 存放可复用组件(如图书卡片、购物车)
  • src/views/ 存放页面级组件(如首页、详情页)
  • src/store/ 配置Vuex状态管理
  • src/api/ 封装API请求

核心功能实现

图书列表展示

<template>
  <div class="book-list">
    <BookCard 
      v-for="book in books" 
      :key="book.id"
      :book="book"
      @add-to-cart="handleAddToCart"
    />
  </div>
</template>

<script>
import BookCard from '@/components/BookCard.vue'
export default {
  components: { BookCard },
  data() {
    return {
      books: [] // 通过API获取数据
    }
  },
  methods: {
    handleAddToCart(book) {
      this.$store.dispatch('addToCart', book)
    }
  }
}
</script>

购物车管理(Vuex示例)

// store/index.js
export default new Vuex.Store({
  state: {
    cartItems: []
  },
  mutations: {
    ADD_TO_CART(state, book) {
      const existingItem = state.cartItems.find(item => item.id === book.id)
      existingItem 
        ? existingItem.quantity++ 
        : state.cartItems.push({ ...book, quantity: 1 })
    }
  },
  actions: {
    addToCart({ commit }, book) {
      commit('ADD_TO_CART', book)
    }
  }
})

订单结算功能

vue实现图书购买系统

<template>
  <div class="checkout">
    <h3>订单总计: {{ totalPrice }}</h3>
    <button @click="handleCheckout">结算</button>
  </div>
</template>

<script>
export default {
  computed: {
    totalPrice() {
      return this.$store.state.cartItems.reduce(
        (sum, item) => sum + item.price * item.quantity, 0
      )
    }
  },
  methods: {
    async handleCheckout() {
      const order = {
        items: this.$store.state.cartItems,
        total: this.totalPrice
      }
      await axios.post('/api/orders', order)
      this.$store.commit('CLEAR_CART')
    }
  }
}
</script>

关键技术点

路由配置

// router/index.js
const routes = [
  {
    path: '/',
    component: () => import('@/views/Home.vue')
  },
  {
    path: '/book/:id',
    component: () => import('@/views/BookDetail.vue')
  },
  {
    path: '/cart',
    component: () => import('@/views/Cart.vue')
  }
]

API请求封装

// api/books.js
import axios from 'axios'

export default {
  getBooks() {
    return axios.get('/api/books')
  },
  getBookDetail(id) {
    return axios.get(`/api/books/${id}`)
  }
}

样式优化建议

使用CSS变量维护主题色:

vue实现图书购买系统

:root {
  --primary-color: #42b983;
  --secondary-color: #35495e;
}

.book-card {
  border: 1px solid var(--secondary-color);
  transition: transform 0.3s;
}

.book-card:hover {
  transform: translateY(-5px);
}

部署注意事项

  1. 生产环境配置环境变量

    VUE_APP_API_BASE_URL=https://api.example.com
  2. 构建命令

    npm run build
  3. 推荐使用Docker容器化部署或静态文件托管服务(如Netlify)

标签: 图书系统
分享给朋友:

相关文章

vue实现审批系统

vue实现审批系统

Vue实现审批系统的关键步骤 搭建基础框架 使用Vue CLI或Vite初始化项目,安装vue-router管理路由,引入Element UI或Ant Design Vue作为UI组件库。审批系统通常…

vue实现登录系统

vue实现登录系统

Vue 登录系统实现步骤 前端部分 安装依赖 确保项目已安装 Vue 3 和必要的库(如 axios、vue-router): npm install axios vue-router 路由配置 在…

php实现自动启动系统

php实现自动启动系统

实现PHP自动启动系统的方法 使用crontab定时任务 在Linux系统中,可以通过crontab设置定时任务来执行PHP脚本。编辑当前用户的crontab文件: crontab -e 添加以下内…

php实现叫号系统

php实现叫号系统

实现叫号系统的基本思路 叫号系统通常用于医院、银行、政务大厅等场所,核心功能包括取号、叫号、显示当前号码和排队情况。PHP作为后端语言,可结合MySQL数据库和前端技术实现。 数据库设计 创建基本表…

如何系统的学习java

如何系统的学习java

学习Java的系统方法 掌握基础语法和核心概念 从变量、数据类型、运算符、控制流程(if-else、循环)等基础语法开始。理解面向对象编程(OOP)的核心概念,如类、对象、继承、多态和封装。推荐官方文…

uniapp新闻系统

uniapp新闻系统

开发UniApp新闻系统的基本步骤 项目初始化 使用HBuilderX创建UniApp项目,选择适合的模板。确保开发环境配置正确,包括Node.js和npm的安装。 页面结构设计 创建新闻列表页、新…