【Vue】032-尚硅谷-尚品汇-mockjs模拟数据---20230111

news2024/12/23 4:08:11

032-尚硅谷-尚品汇-mockjs模拟数据

官网链接
在这里插入图片描述

第一步:安装依赖包mockjs

安装mockjs `npm install --save mockjs`

第二步:在src文件夹下创建一个文件夹mock。

第三步:准备模拟的数据。!
mock/banner.json

[
    {
        "id": "1",
        "imgUrl": "/images/banner1.jpg"
    },
    {
        "id": "2",
        "imgUrl": "/images/banner2.jpg"
    },
    {
        "id": "3",
        "imgUrl": "/images/banner3.jpg"
    },
    {
        "id": "4",
        "imgUrl": "/images/banner4.jpg"
    }
]

mock/floor.json

[
    {
        "id": "001",
        "name": "家用电器",
        "keywords": [
            "节能补贴",
            "4K电视",
            "空气净化器",
            "IH电饭煲",
            "滚筒洗衣机",
            "电热水器"
        ],
        "imgUrl": "/images/floor-1-1.png",
        "navList": [
            {
                "url": "#",
                "text": "热门"
            },
            {
                "url": "#",
                "text": "大家电"
            },
            {
                "url": "#",
                "text": "生活电器"
            },
            {
                "url": "#",
                "text": "厨房电器"
            },
            {
                "url": "#",
                "text": "应季电器"
            },
            {
                "url": "#",
                "text": "空气/净水"
            },
            {
                "url": "#",
                "text": "高端电器"
            }
        ],
        "carouselList": [
            {
                "id": "0011",
                "imgUrl": "/images/floor-1-b01.png"
            },
            {
                "id": "0012",
                "imgUrl": "/images/floor-1-b02.png"
            },
            {
                "id": "0013",
                "imgUrl": "/images/floor-1-b03.png"
            }
        ],
        "recommendList": [
            "/images/floor-1-2.png",
            "/images/floor-1-3.png",
            "/images/floor-1-5.png",
            "/images/floor-1-6.png"
        ],
        "bigImg": "/images/floor-1-4.png"
    },
    {
        "id": "002",
        "name": "手机通讯",
        "keywords": [
            "节能补贴2",
            "4K电视2",
            "空气净化器2",
            "IH电饭煲2",
            "滚筒洗衣机2",
            "电热水器2"
        ],
        "imgUrl": "/images/floor-1-1.png",
        "navList": [
            {
                "url": "#",
                "text": "热门2"
            },
            {
                "url": "#",
                "text": "大家电2"
            },
            {
                "url": "#",
                "text": "生活电器2"
            },
            {
                "url": "#",
                "text": "厨房电器2"
            },
            {
                "url": "#",
                "text": "应季电器2"
            },
            {
                "url": "#",
                "text": "空气/净水2"
            },
            {
                "url": "#",
                "text": "高端电器2"
            }
        ],
        "carouselList": [
            {
                "id": "0011",
                "imgUrl": "/images/floor-1-b01.png"
            },
            {
                "id": "0012",
                "imgUrl": "/images/floor-1-b02.png"
            },
            {
                "id": "0013",
                "imgUrl": "/images/floor-1-b03.png"
            }
        ],
        "recommendList": [
            "/images/floor-1-2.png",
            "/images/floor-1-3.png",
            "/images/floor-1-5.png",
            "/images/floor-1-6.png"
        ],
        "bigImg": "/images/floor-1-4.png"
    }
]

把mock数据需要的图片放置于public文件夹中
在这里插入图片描述

第四步:在mock文件夹中创建一个mockServe.js文件。
(注意:在server.js文件当中对于banner.json||floor.json的数据没有暴露,但是可以在server模块中使用。对于webpack当中一些模块:图片、json,不需要对外暴露,因为默认就是对外暴露。)

第五步:通过mock模块模拟出数据
mockServe.js

import Mock  from 'mockjs'
//webpack默认对外暴露:json、图片
import banner from './banner.json'
import floor from './floor.json'

//mock数据:第一个参数请求地址、第二个参:请求数据
Mock.mock("/mock/banner",{code:200,data:banner})
Mock.mock("/mock/floor",{code:200,data:floor})
//记得要在main.js中引入一下
//import ''@/mock/mockServer

第六步:回到入口文件,引入serve.js。

import '@/mock/mockServe'

在这里插入图片描述

第七步:在API文件夹中创建mockRequest【axios实例:baseURL:‘/mock’】
1.api/mockAjax.js几乎跟request.js一模一样,默认暴露request,import时重命名为mockRequest。

import axios from "axios";

//引入进度条
import nprogress from 'nprogress';
//引入进度条样式
import "nprogress/nprogress.css";

//1、对axios二次封装
const requests = axios.create({
    //基础路径,requests发出的请求在端口号后面会跟改baseURl
    baseURL:'/mock',
    timeout: 5000,
})
//2、配置请求拦截器
requests.interceptors.request.use(config => {
    //config内主要是对请求头Header配置
    //比如添加token

    //开启进度条
    nprogress.start();
    
    return config;
})
//3、配置相应拦截器
requests.interceptors.response.use((res) => {
    //成功的回调函数

    //响应成功,关闭进度条
    nprogress.done()

    return  res.data;
},(error) => {
    //失败的回调函数
    console.log("响应失败"+error)
    return Promise.reject(new Error('fail'))
})
//4、对外暴露
export default requests;

2.api/index.js暴露mock数据

//当前模块,API进行统一管理,即对请求接口统一管理
import requests from "@/api/request";
import mockRequests from "./mockAjax";

//首页三级分类接口
export const reqgetCategoryList = () => {
    return  requests({
        url: '/product/getBaseCategoryList',
        method: 'GET'
    })
}

//切记:当前函数执行需要把服务器返回结果返回
//获取banner(Home首页轮播图接口)
export const reqGetBannerList = () => mockRequests.get("/banner");
//获取floor数据
export const reqFloorList = () => mockRequests.get("/floor");


第八步:Vuex三连(actions、mutations、state)
store/home.js新增 async getBannerList()、GETBANNERLIST()、bannerList,新增 async getFloorList()、GETFLOORLIST()、floorList。

import { reqgetCategoryList,reqGetBannerList } from "@/api";

//home模块的仓库
const state = {
  //home仓库中存储三级菜单的数据
  categoryList: [],
  //轮播图的数据
  bannerList: [],
  //floor组件的数据
  floorList:[]
};

//mutions是唯一修改state的地方
const mutations = {
    GETCATEGORYLIST(state, categoryList) {
        state.categoryList = categoryList;
      },
    GETBANNERLIST(state, bannerList) {
        state.bannerList = bannerList;
        console.log('GETBANNERLIST')
      },
    GETFLOORLIST(state,floorList){
         state.floorList = floorList;
      }
};

//action|用户处理派发action地方的,可以书写异步语句、自己逻辑地方
const actions = {
    async getCategoryList({ commit }) {
        //reqgetCategoryList返回的是一个Promise对象
        //需要用await接受成功返回的结果,await必须要结合async一起使用(CP)
        let result = await reqgetCategoryList();
        if (result.code == 200) {
          commit("GETCATEGORYLIST", result.data);
        }
      },
    async getBannerList({ commit }) {
        let result = await reqGetBannerList();
        if (result.code == 200) {
          commit("GETBANNERLIST", result.data);
          console.log('result.data',result.data)
        }
      },
    //获取floor数据
    async getFloorList({ commit }) {
      let result = await reqFloorList();
      if (result.code == 200) {
        //提交mutation
        commit("GETFLOORLIST", result.data);
        console.log('result.data',result.data)
      }
    },
};


//计算属性
const getters = {};


export default {
  state,
  mutations,
  actions,
  getters,
};

第九步: 组件请求数据
ListContainer/index.vue 请求数据

<script>
import { mapState } from "vuex";
export default {
  name: 'ListContainer',
  mounted() {
    //mounted:组件挂载完毕,正常说组件结构(DOM)已经全有了
    //为什么swiper实例在mounted当中直接书写不可以:因为结构还没有完整
    this.$store.dispatch("getBannerList");
  },
  computed: {
    ...mapState({
      bannerList: (state) => state.home.bannerList,
    }),
  }
}
</script>

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

哪种蓝牙耳机音质好?2023公认音质最好的蓝牙耳机推荐

现如今&#xff0c;蓝牙耳机的使用频率越来越高&#xff0c;其在音质上的表现也越来越好。那么&#xff0c;在众多的蓝牙耳机当中&#xff0c;哪种蓝牙耳机音质好&#xff1f;下面&#xff0c;我来给大家推荐几款公认音质最好的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡小…

(十七)Java的时间与日期(1)

目录 前言: ①Date类 ②SimpleDateFormat类 ③Calendar 前言: 时间和日期. 在系统开发中&#xff0c;日期与时间作为重要的业务因素&#xff0c;起到十分关键的作用&#xff0c;例如同一个时间节点下的数据生成&#xff0c;基于时间范围的各种数据统计和分析&#xff0c;集群节…

深入浅出变长结构体

1、 问题的引出 项目中用到数据包的处理&#xff0c;但包的大小是不固定的&#xff0c;其长度由包头的2字节决定。比如如下的包头&#xff1a;88 0f 0a ob cd ef 23 00 。长度由头2个字节880f决定&#xff0c;考虑字节序&#xff0c;转为0f88&#xff0c;转为10进制3976个字节的…

汽车零部件行业追溯系统的应用

汽车行业正处于一个蓬勃发展的阶段&#xff0c;随着客户需求的不断变化&#xff0c;生产厂商推出新款商品的速度也越来越快&#xff0c;新项目和变更的不断出现&#xff0c;就可能导致在交付的产品质量方面遇到各种各样的问题。如果这些质量问题得不到及时有效地追溯和控制&…

知识点滴 - PLC培训笔记

如上图所示&#xff0c;这个设备就是PLC的应用场景&#xff0c;对外控制很多接口电路&#xff0c;交流直流&#xff0c;不同大小电流、电压的电路。在工业上使用很多。 而开发PLC程序时&#xff0c;是在相应的集成开发环境中&#xff0c;画出如下的梯形图&#xff1a; 什么是PL…

Vue使用Element-UI生成并展示表头序号

前言 序号算是在展示数据的时候&#xff0c;一种很普遍的属性了&#xff0c;我们可以自己写生成序号的规则&#xff0c;也可以借助第三方。 这里我选择后者&#xff0c;使用Element-UI自带的一个table属性&#xff0c;去生成并展示需要 首先看下我的页面&#xff0c;是没有序…

Apache Sling App CMS <1.1.4 存在反射型XSS漏洞(CVE-2022-46769)

漏洞描述 Apache Sling 是一个基于可扩展内容树&#xff08;extensible content tree&#xff09;的 RESTful Web 应用框架。 1.1.4 之前版本的 Apache Sling 中的 cms.js#confirmMessage 方法未对用户可控的 title 和 message 参数进行过滤&#xff0c;攻击者可将精心构造的…

dubbo源码实践-总结

自己大概花了一个月的时间&#xff0c;断断续续的看了一遍dubbo源码&#xff0c;之前的文章从实践出发搭建了dubbo各层的例子&#xff01;Dubbo源码的学习也暂时告一段落。这篇就谈谈自己对dubbo源码学习个人感受&#xff01;1 dubbo是什么&#xff1f;dubbo是一个RPC框架&…

网站优化包括对什么优化(网站优化有哪些方面)

互联网时代下&#xff0c;各行各业都想在在互联网中占据市场&#xff0c;目前网站优化成为时代的潮流&#xff0c;很多站长&#xff0c;在对网站进行优化时&#xff0c;稍不注意就会造成网站优化过度&#xff0c;这也是各位最头疼的事情&#xff0c;网站优化能急于求成&#xf…

KubePi <1.6.4 存在会话固定漏洞(CVE-2023-22479)

漏洞描述 KubePi 是一个 K8s 面板&#xff0c;允许管理员导入多个 Kubernetes 集群&#xff0c;并且通过权限控制将不同 cluster、namespace 的权限分配给指定用户。 1.6.4 之前版本的 KubePi 在用户登录后未刷新用户 cookie&#xff0c;攻击者可通过诱导用户点击恶意链接等劫…

maven创建web工程,使用模板方式(二)

一&#xff0c;选择webapp模板 二&#xff0c;填写完信息后&#xff0c;创建后是如下的结构&#xff1a; 可以看到只有web目录&#xff0c;没有其他的java&#xff0c;resources&#xff0c;test目录等。 三&#xff0c;创建Java&#xff0c;resources,test目录 右键-> ma…

【C语言进阶】 指针强化练习

目录题目一题目二题目三题目四题目五题目六题目七题目八题目一 下面这段代码的执行结果是&#xff1f; int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d\n", *(a 1), *(ptr - 1));return 0; }解决这种数组与指针相结合的问题…

【Leetcode面试常见题目题解】2. 无重复字符的最长子串

题目描述 本文是LC第3题&#xff1a;无重复字符的最长子串。 题目描述如下 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 举例 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 输入:…

html实现酷炫的公司年会抽奖(附源码)

文章目录1.设计来源1.1 主界面1.2 抽奖效果1.2 中奖效果2.效果和源码配置2.1 动态效果2.2 员工信息配置2.3 奖品信息配置2.4 抽奖音效配置2.5 源代码源码下载作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/128640998 ht…

AI绘画日漫欧漫动态表情换脸游戏风生成红包封面流量主小程序开发

AI绘画日漫欧漫动态表情换脸游戏风生成红包封面流量主小程序开发 因全网AI绘画大量小程序被封禁下架。只有采用合规稳定运营引擎。 文生图图动日漫图生欧漫图转动图人物表情变脸换脸3D动漫集成7大AI制图模式 支持个人模式和企业支付。趣味AI制图支持流量主。 打造一款适合个人…

uniapp 画中画悬浮窗(视频) Ba-VideoPip

简介&#xff08;下载地址&#xff09; Ba-VideoPip 是一款画中画方式的视频悬浮窗插件。支持点播、直播&#xff1b;支持官方、三方播放器无缝切换&#xff1b;支持动态刷新&#xff08;如切换视频或进度&#xff09;。 支持点播、直播支持官方、三方播放器无缝切换支持动态…

【unity3D】Collider碰撞器组件

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的Collider碰撞器组件 Collider碰撞器组件▶碰撞器类别▶Box Collider▶Sphere Collider▶Box Collider 2D▶Composite Collider 2…

Aspose.Words for .NET Crack 23.1.0

Aspose.Words for .NET Crack Aspose.Words 及其产品系列是一组 Word 文档&#xff0c;它们处理 API 以创建、编辑、打印、阅读和稍后转换所有格式化的 Word 文档和文件格式&#xff0c;就在 .NET、Java、Android 中、Cloud、SSRS、SharePoint 以及最后但并非最不重要的 Jasper…

【fpdlink显示】DS90UB948关于941连接948 GPIO调试问题

1. 前言 使用一个941连接2 948显示: 941的GPIO0/1/2/3到前948的GPIO0/1/2/3和941的D_GPIO0/1/2/3到948的GPIO0/1/2/3。 设置gpio3输出,则941的D_GPIO3设置高,而948的gpio3设置不高; 但设置gpio3输入后,看到941的D_GPIO3跟随948的gpio3变化。 2. 原理图连接 3. 测试代码…

通过图像了解 Git

我受到Nico Riedmann 的 Learn git concepts, not commands 的启发&#xff0c;我用我自己的方式总结了 git。当然&#xff0c;我也通过阅读官方文档来补充它。从系统结构上理解git&#xff0c;让git更有趣。我最近对 git 上瘾了&#xff0c;以至于我正在创建自己的 git 系统。…