当前位置:首页 > 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) }
      }
    }
  }
}

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

<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前端实现打印功能

使用Vue实现前端打印功能 在Vue项目中实现打印功能可以通过多种方式完成,以下是几种常见的方法: 使用window.print()方法 这是最简单的打印方式,直接调用浏览器的打印功能。 me…

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDi…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(…

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="clock-…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue实现图册

vue实现图册

Vue实现图册功能 在Vue中实现图册功能通常涉及图片展示、切换、缩放等交互效果。以下是常见的实现方法和关键代码示例: 基础图册组件结构 使用Vue单文件组件构建基础结构: <templ…