当前位置:首页 > VUE

vue实现外卖页面

2026-03-29 15:18:39VUE

实现外卖页面的核心步骤

使用Vue.js实现外卖页面需要结合组件化开发、状态管理以及第三方库的集成。以下为关键实现方法:

页面结构与组件划分

外卖页面通常分为顶部导航栏、商品分类侧边栏、商品列表和底部购物车组件。创建以下Vue组件:

  • Header.vue:包含搜索框和商家信息
  • Sidebar.vue:商品分类导航
  • GoodsList.vue:商品展示卡片
  • Cart.vue:底部购物车汇总
<!-- GoodsList.vue示例 -->
<template>
  <div class="goods-item" v-for="item in goodsList" :key="item.id">
    <img :src="item.image" class="goods-img">
    <div class="goods-info">
      <h3>{{ item.name }}</h3>
      <p class="price">¥{{ item.price }}</p>
      <div class="cart-control">
        <button @click="decrease(item)">-</button>
        <span>{{ item.count || 0 }}</span>
        <button @click="increase(item)">+</button>
      </div>
    </div>
  </div>
</template>

状态管理设计

使用Vuex管理全局状态,包括:

  • 商品数据
  • 购物车状态
  • 当前分类选择
// store.js
export default new Vuex.Store({
  state: {
    goods: [],
    cart: [],
    currentCategory: 0
  },
  mutations: {
    ADD_TO_CART(state, goods) {
      const record = state.cart.find(item => item.id === goods.id)
      if (!record) {
        state.cart.push({...goods, count: 1})
      } else {
        record.count++
      }
    }
  }
})

交互功能实现

商品分类联动效果通过计算属性和事件监听实现:

// Sidebar.vue
export default {
  computed: {
    categories() {
      return this.$store.state.goods.map(item => item.category)
    }
  },
  methods: {
    selectCategory(index) {
      this.$store.commit('SET_CATEGORY', index)
    }
  }
}

购物车功能优化

实现购物车动画和实时计算:

// Cart.vue
export default {
  computed: {
    totalPrice() {
      return this.$store.state.cart.reduce((total, item) => {
        return total + item.price * item.count
      }, 0)
    }
  }
}

数据请求与Mock

使用axios获取后端数据,开发阶段可配置Mock数据:

// api.js
export const getGoods = () => {
  return axios.get('/api/goods')
}

// mock数据示例
const mockGoods = [
  {
    id: 1,
    name: '汉堡',
    price: 15,
    category: '快餐'
  }
]

样式与布局技巧

采用flex布局实现响应式设计:

vue实现外卖页面

.goods-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.goods-item {
  width: 48%;
  margin-bottom: 15px;
}

性能优化建议

  1. 商品图片使用懒加载
  2. 长列表采用虚拟滚动
  3. 频繁操作的数据使用计算属性缓存
  4. 组件按需加载
// 图片懒加载示例
import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload, {
  loading: require('@/assets/loading.gif')
})

以上实现方案可根据具体需求进行调整,建议结合UI框架如Element UI或Vant加速开发流程。实际项目中还需考虑登录状态、支付流程等完整业务链路的实现。

标签: 外卖页面
分享给朋友:

相关文章

vue实现转页面

vue实现转页面

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式完成,具体取决于项目结构和需求。 使用 router-link 组件 router-link 是 Vue Router…

vue实现动态显示页面

vue实现动态显示页面

动态显示页面的实现方法 在Vue中实现动态显示页面通常涉及数据绑定、条件渲染、列表渲染以及动态组件等技术。以下是几种常见的实现方式: 数据驱动视图 Vue的核心思想是数据驱动视图,通过修改数据自动更…

vue实现页面刻度

vue实现页面刻度

实现页面刻度的基本思路 在Vue中实现页面刻度通常用于展示进度、测量或标记特定位置。可以通过动态计算和渲染刻度元素来实现,结合CSS样式控制显示效果。 使用动态渲染刻度线 通过v-for指令动态生成…

vue实现聊天页面

vue实现聊天页面

Vue 实现聊天页面的核心步骤 搭建基础结构 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖如 vue-router 和 axios。创建单文件组件 ChatWindow.vue 作为主…

H5页面全景怎么实现

H5页面全景怎么实现

H5页面全景实现方法 H5页面全景效果可以通过多种技术实现,以下是几种常见的方法: 使用Three.js库 Three.js是一个基于WebGL的JavaScript库,适合创建复杂的3D全景效果。…

vue单页面实现

vue单页面实现

Vue 单页面应用(SPA)实现指南 Vue.js 是一个流行的前端框架,适合构建单页面应用(SPA)。以下是实现 Vue SPA 的关键步骤和技术要点。 项目初始化 使用 Vue CLI 快速搭建…