当前位置:首页 > 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 3 和必要的库(如 axios、vue-router): npm install axios vue-router 路由配置 在…

使用vue前端实现的系统vue

使用vue前端实现的系统vue

Vue 前端系统实现的核心步骤 项目初始化与配置 通过 Vue CLI 或 Vite 创建项目,安装必要依赖(如 Vue Router、Pinia/Vuex、Axios)。配置基础目录结构,区分组件、…

基于vue实现桌面系统

基于vue实现桌面系统

使用Vue构建桌面系统的方法 技术选型与框架整合 Vue本身是前端框架,构建桌面系统需要结合Electron或NW.js等跨平台桌面开发工具。Electron更为流行,适合与Vue深度集成。推荐使用v…

php实现自动启动系统

php实现自动启动系统

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

php实现在线预约系统

php实现在线预约系统

数据库设计 创建一个MySQL数据库表存储预约信息,包含字段如id、name、email、phone、service_type、appointment_date、appointment_time、st…

php实现叫号系统

php实现叫号系统

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