当前位置:首页 > VUE

vue实现商品管理

2026-02-24 18:20:29VUE

Vue 实现商品管理的基本方法

环境准备
安装 Vue CLI 创建项目:

npm install -g @vue/cli
vue create product-management
cd product-management

项目结构
推荐按功能模块划分目录:

src/
├── components/
│   ├── ProductList.vue
│   ├── ProductForm.vue
├── views/
│   ├── ProductManagement.vue
├── store/ (Vuex)
│   ├── modules/
│   │   └── products.js

核心功能实现

商品列表展示
使用 v-for 渲染商品数据,配合分页组件:

<template>
  <div v-for="product in products" :key="product.id">
    <h3>{{ product.name }}</h3>
    <p>价格: {{ product.price }}</p>
  </div>
  <paginator :total-items="total" @page-changed="loadProducts"/>
</template>

<script>
export default {
  data() {
    return {
      products: [],
      total: 0
    }
  },
  methods: {
    async loadProducts(page = 1) {
      const res = await axios.get(`/api/products?page=${page}`)
      this.products = res.data.items
      this.total = res.data.total
    }
  }
}
</script>

商品表单组件
实现新增/编辑的双向绑定:

<template>
  <form @submit.prevent="handleSubmit">
    <input v-model="form.name" placeholder="商品名称">
    <input type="number" v-model="form.price">
    <button type="submit">提交</button>
  </form>
</template>

<script>
export default {
  props: ['initialData'],
  data() {
    return {
      form: this.initialData || { name: '', price: 0 }
    }
  },
  methods: {
    handleSubmit() {
      this.$emit('submit', this.form)
    }
  }
}
</script>

状态管理方案

Vuex 模块化存储
创建商品专用的 store 模块:

// store/modules/products.js
const state = {
  allProducts: []
}

const mutations = {
  SET_PRODUCTS(state, products) {
    state.allProducts = products
  }
}

const actions = {
  async fetchProducts({ commit }) {
    const res = await axios.get('/api/products')
    commit('SET_PRODUCTS', res.data)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

组合式 API 写法
使用 Vue 3 的 Composition API:

import { ref, onMounted } from 'vue'
import { useStore } from 'vuex'

export default {
  setup() {
    const store = useStore()
    const searchQuery = ref('')

    onMounted(() => {
      store.dispatch('products/fetchProducts')
    })

    const filteredProducts = computed(() => {
      return store.state.products.allProducts.filter(
        p => p.name.includes(searchQuery.value)
      )
    })

    return { searchQuery, filteredProducts }
  }
}

高级功能扩展

图片上传处理
使用 FileReader 实现本地预览:

methods: {
  handleImageUpload(e) {
    const file = e.target.files[0]
    const reader = new FileReader()
    reader.onload = (event) => {
      this.form.imageUrl = event.target.result
    }
    reader.readAsDataURL(file)
  }
}

数据验证
使用 Vuelidate 进行表单校验:

import { required, minValue } from '@vuelidate/validators'

export default {
  validations() {
    return {
      form: {
        name: { required },
        price: { minValue: minValue(0) }
      }
    }
  }
}

性能优化
对商品列表进行虚拟滚动:

vue实现商品管理

<template>
  <RecycleScroller
    :items="products"
    :item-size="100"
    key-field="id"
  >
    <template v-slot="{ item }">
      <product-item :data="item"/>
    </template>
  </RecycleScroller>
</template>

标签: 商品vue
分享给朋友:

相关文章

vue查看更多怎么实现

vue查看更多怎么实现

实现 Vue 的“查看更多”功能 数据截取与显示控制 通过 v-if 或 v-show 控制内容的显示与隐藏。初始状态下只显示部分内容,点击“查看更多”后展开完整内容。 <template&g…

vue前端分页怎么实现

vue前端分页怎么实现

前端分页实现方法 在Vue中实现前端分页通常涉及数据分割和页面控制逻辑。以下是常见的实现方式: 使用计算属性分页 通过计算属性对数据进行切片处理: computed: { paginatedD…

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript 图表…

vue实现拖放

vue实现拖放

Vue 实现拖放功能 Vue 中实现拖放功能通常可以通过 HTML5 的原生拖放 API 或第三方库(如 vuedraggable)来实现。以下是两种方法的详细说明。 使用 HTML5 原生拖放 A…

vue实现图库

vue实现图库

Vue 实现图库的基本方法 使用 Vue 实现图库功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用 Vue 和第三方库(如 Vue Gallery) 安装 vue-gallery 或…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mod…