第4章 Vue全家桶(vue-router+vuex) - 4.22 模拟mock数据和商铺数据显示13步骤

本文要结合下面几篇文章才能串起来:

第4章 Vue全家桶(vue-router+vuex)- 4.17 vuex的其本使用8步骤

第4章 Vue全家桶(vue-router+vuex)- 4.18 为什么要使用actions

第4章 Vue全家桶(vue-router+vuex)- 4.18 vuex为什么要使用actions——异步起到同步的作用

第4章 Vue全家桶(vue-router+vuex) - 4.19 Vuex系列的辅助函数的运用——mapState,mapGetters,mapMutations,mapActions

第4章 Vue全家桶(vue-router+vuex) - 4.20 如何在组件内部提交数据给vuex共3步骤

第4章 Vue全家桶(vue-router+vuex) - 4.21 使用vuex的模块化构建购物车步骤 

项目目录如下:

 模拟mock数据和商铺数据显示13步骤

目录

 模拟mock数据和商铺数据显示13步骤


模拟mock数据和商铺数据显示第1步:在根目录下的vue.config.js里面设置api.
模拟mock数据和商铺数据显示第2步:在根目录下的vue.config.js里面声明products。
模拟mock数据和商铺数据显示第3步:在ProductList.vue里面展示。
模拟mock数据和商铺数据显示第4步:在ProductList.vue里面导入mapState。
模拟mock数据和商铺数据显示第5步:在ProductList.vue里面设置mapState方法。
模拟mock数据和商铺数据显示第6步:在ProductList.vue里面created方法。
模拟mock数据和商铺数据显示第7步:在products.js里面设置actions方法。
模拟mock数据和商铺数据显示第8步:在products.js里面导入axios。
模拟mock数据和商铺数据显示第9步:在products.js里面通过axios获取products数据。
模拟mock数据和商铺数据显示第10步:在products.js里面设置mutations方法。
模拟mock数据和商铺数据显示第11步:在main.js里面注册全局过滤器。
模拟mock数据和商铺数据显示第12步:在main.js里面注册全局组件。此操作前需要先备注掉About.vue里面两处导入和挂载ShoppingCart。
模拟mock数据和商铺数据显示第13步:在main.js里面挂载ShoppingCart.

每一步操作,在相应的代码里面都有备注。

第1步:在根目录下的vue.config.js里面设置api.

第2步:在根目录下的vue.config.js里面声明products。

const { defineConfig } = require('@vue/cli-service')

const products = [  //4.22 模拟mock数据和商铺数据显示第2步:在根目录下的vue.config.js里面声明products。
  { id: 1, title: 'iphone11', price: 800, inventory: 10 },
  { id: 2, title: 'iphone11 pro', price: 1200, inventory: 15 },
  { id: 3, title: 'iphone11 max', price: 1500, inventory: 5 },
]

module.exports = {  //4.22 模拟mock数据和商铺数据显示第1步:在根目录下的vue.config.js里面设置api.
  devServer:{
    before(app,serve) {
      app.get('/api/products', (req, res) => {
        res.json({
          results:products
        })
      })
    }
  }
}

module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave:false,  //检查命名规范
})

模拟mock数据和商铺数据显示第3步:在ProductList.vue里面展示。
模拟mock数据和商铺数据显示第4步:在ProductList.vue里面导入mapState。
模拟mock数据和商铺数据显示第5步:在ProductList.vue里面设置mapState方法。
模拟mock数据和商铺数据显示第6步:在ProductList.vue里面created方法。

ProductList.vue代码: 

// ProductList.vue内容

<template>
    <div>
        <h2>我的商铺</h2>
        <ul>    <!-- //4.22 模拟mock数据和商铺数据显示第3步:在ProductList.vue里面展示。 -->
            <li v-for="(product) in products" :key="product.id">
                {{product.title}} - {{product.price | currency}}    <!-- //4.22 模拟mock数据和商铺数据显示第12步:使用过滤器currency -->
            </li>
        </ul>
    </div>
</template>

<script>
import { mapState } from 'vuex';    //4.22 模拟mock数据和商铺数据显示第4步:在ProductList.vue里面导入mapState。
    export default {
        computed: {     //4.22 模拟mock数据和商铺数据显示第5步:在ProductList.vue里面设置mapState方法。
            ...mapState('products',['products'])
        },
        created () {    //4.22 模拟mock数据和商铺数据显示第6步:在ProductList.vue里面created方法。
            this.$store.dispatch('products/getAllProducts');
        }
    }
</script>

<style lang="scss" scoped>

</style>

第7步:在products.js里面设置actions方法。
第8步:在products.js里面导入axios。
第9步:在products.js里面通过axios获取products数据。
第10步:在products.js里面设置mutations方法。

products.js代码:

// products.js内容

import Axios from 'axios'   //4.22 模拟mock数据和商铺数据显示第8步:在products.js里面导入axios。
export default {
    namespaced:true,    //4.21 使用vuex的模块化构建购物车第9步:在products.js里面添加namespaced属性.
    state:{
        products: []    //4.21 使用vuex的模块化构建购物车第5步:在products.js里面添加products.    
    },
    getters:{

    },
    mutations:{
        getAllProducts(state,products){     //4.22 模拟mock数据和商铺数据显示第10步:在products.js里面设置mutations方法。
            state.products = products
        }
    },
    actions:{   
        async getAllProducts({commit}){   //4.22 模拟mock数据和商铺数据显示第7步:在products.js里面设置actions方法。
            //发送请求 获取数据 提交mutations
            try {   //4.22 模拟mock数据和商铺数据显示第9步:在products.js里面通过axios获取products数据。
                const res = await Axios.get('/api/products');
                const results = res.data.results;
                commit('getAllProducts',results);
            } catch (error) {
                console.log(error);
            }
        }
    }
}

第11步:在main.js里面注册全局过滤器。
第12步:在main.js里面注册全局组件。此操作前需要先备注掉About.vue里面两处导入和挂载ShoppingCart。
第13步:在main.js里面挂载ShoppingCart.

main.js代码:

// main.js内容

import Vue from 'vue'
import App from './App.vue'
import router from './router'
//导入创建的store
import store from './store'
Vue.config.productionTip = false
//注册全局组件的方式
import ShoppingCart from '@/components/ShoppingCart';   //4.22 模拟mock数据和商铺数据显示第12步:在main.js里面注册全局组件。
Vue.component(ShoppingCart.name, ShoppingCart)  //4.22 模拟mock数据和商铺数据显示第13步:在main.js里面挂载ShoppingCart.

//全局注册过滤器
Vue.filter('currency',(value)=>{  //4.22 模拟mock数据和商铺数据显示第11步:在main.js里面注册全局过滤器
  return '$' + value;
})

new Vue({
  router,
  //一定要挂载
  store,
  render: h => h(App)
}).$mount('#app')

运行结果如下:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
易购商城是一个基于Vue框架开发的前端毕设项目。在该项目中,我使用了VueVuexVue Router、Element UI、Axios等技术和库来实现各种功能。 首先,Vue是一种流行的前端框架,它具有响应式的数据绑定和组件化的特性,使得开发者可以轻松构建交互性强、高效的单页面应用。 其次,我使用了Vuex来管理应用的状态。Vuex提供了一种集中式的状态管理方案,帮助我管理和共享全局的数据,使得不同组件之间的通信更加便捷。 Vue Router是Vue官方提供的路由管理库,用于实现页面之间的导航和路由跳转。我使用它来定义和管理不同页面之间的跳转逻辑,使得用户可以通过URL来访问和导航各个页面。 Element UI是一套基于Vue的桌面端组件库,它提供了丰富的UI组件和样式,使得我可以快速构建出美观和功能完善的界面。 为了与后端进行数据交互,我使用了Axios库。Axios是一个基于Promise的HTTP客户端,可以在前端与后端进行异步数据交互,使得用户可以实现登录、注册、添加购物车、结算等功能。 最后,我还使用了Vue插件vue-echarts和vue-awesome-swiper来实现商品数据的可视化展示和轮播图功能。这些插件都提供了强大且易用的功能,使得易购商城的用户界面更加丰富和吸引人。 总体来说,通过使用VueVuexVue Router、Element UI、Axios等技术和库,我成功地实现了易购商城的前端开发工作,提供了丰富的功能和良好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值