当前位置:首页 > 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.js可以高效构建这些模块。 课程展示模块需要设计课程卡片、分类筛选、搜索功能。用户管理模…

vue实现一个插件系统

vue实现一个插件系统

实现插件系统的核心思路 Vue的插件系统允许通过Vue.use()注册全局功能,通常包含以下要素: 暴露install方法供Vue调用 添加全局资源(指令/过滤器/组件等) 注入组件选项 添加实例…

vue实现收银系统

vue实现收银系统

Vue 实现收银系统的核心步骤 技术选型 Vue 3 + Composition API 提供响应式数据管理 Element UI 或 Ant Design Vue 提供现成的UI组件 Vuex 或…

vue系统首页实现

vue系统首页实现

Vue 系统首页实现方法 创建基础项目结构 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖如 vue-router、axios、element-ui 等。项目目录应包含 componen…

vue实现家教系统

vue实现家教系统

Vue实现家教系统的关键步骤 项目初始化与配置 使用Vue CLI创建项目框架,安装必要依赖如Vue Router、Vuex和Axios。配置基础路由和状态管理结构,确保项目具备SPA特性。 用户认…

使用vue前端实现的系统vue

使用vue前端实现的系统vue

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