vue2中使用mock数据发送请求

news2024/11/22 14:10:16

1.安装

npm i mockjs@1.1

 2.准备json数据

说明:mock数据需要的图片放置到public文件夹中(原封不动的打包到dist文件夹)

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

3.创建mockServe.js文件

说明:默认暴露json格式,图片等。mock数据:第一个参数请求地址,第二个参数:请求数据。

//说明:一定要大写
import Mock from "mockjs"

// 把json数据格式引入进来,webpack默认暴露,图片,json格式文件
import banner from "./banner.json"

import floor from "./floor.json"

Mock.mock("/mock/banner",{code:200,data:banner})
Mock.mock("/mock/floor",{code:200,data:floor})

 4.引入main.js

说明:就是向引入图片一样;将Mock.mock语句放在main.js中是为了确保在整个应用程序运行时,模拟接口能够正常工作,而不是在某个特定组件或模块中只生效一次。这样做可以使模拟数据在整个应用程序范围内生效,方便进行开发和测试。

// 引入mock数据
import "@/mock/mockServe";

5. 重写axios

//对axios进行二次封装
import axios from "axios"
import "nprogress/nprogress.css"

// 引入进度条

import nprogress from "nprogress"
  
// start代表进度条开始,done表示进度条结束
const requests =axios.create({
    //   发请求的时候自动出现api
      baseURL:"/mock",
    //   请求超时的时间
      timeout:5000,

})
// 请求拦截器,
requests.interceptors.request.use((config)=>{
    // config对象中有一个headers请求头

    // 进度条开始
    nprogress.start()
      return config
})

// 响应拦截器
requests.interceptors.response.use((res)=>{
    // 成功的回调函数,服务器相应数据回来以后,响应拦截器可以检测到
    // 进度条结束
    nprogress.done()
    return res.data
},error=>{
    console.log(error);
    return Promise.reject(new Error("fail"))
})


export default requests

 6.index.js

import mockRequest from "./mock";
// 轮播图
export const reqGetBannerList = () => {
  return mockRequest.get("/banner");
};

7.store

说明:store里面的index.js。

//home模块的小模块
import { reqCatgoryList,reqGetBannerList,reqFloorList } from "@/api"

const state={
     //state中的默认值为空,服务器返回的值进行初始花,服务器返回的
    //  数组,就返回数组,对象也是
      categoryList:[],
       bannerList:[],
       floorList:[]
}
const actions={
    // 通过接口函数向服务器发送数据
   async categoryList({commit}){
        let result =await reqCatgoryList()
       if(result.code===200){
          commit("CATEGORYLIST",result.data)
       }
    },
    // 获取首页轮播图
   async getBannerList({commit}){
      const result=await reqGetBannerList()
      if(result.code===200){
         commit("GETBANNERLIST",result.data)
      }
    },
    // 获取floor数据
   async getFloorList({commit}){
    const result=await reqFloorList()
    if(result.code===200){
        commit("GETFLOORLIST",result.data)
     }
    }
}

const mutations={
    CATEGORYLIST(state,categoryList){
        state.categoryList=categoryList
    },
    GETBANNERLIST(state,bannerList){
        state.bannerList=bannerList
    },
    GETFLOORLIST(state,floorList){
        state.floorList=floorList
    }

}

const getters={}

export default {
    state,
    mutations,
    actions,
    getters
}

8.vue页面

说明:vue页面中的script标签

import { mapState } from "vuex";
// 引入swipter
export default {
  name: "",
  data() {
    return {};
  },
  mounted() {
    //派发action,将数据存储到仓库
    this.$store.dispatch("getBannerList");
    // 因为dispathch设置到异步请求是,
    // 导致v-for结构还没完成
  },
  computed: {
    ...mapState({
      bannerList: (state) => state.home.bannerList,
    }),
  },
};

 

 

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

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

相关文章

每天一道leetcode: 57.和为s的两个数字

今日份题目: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例1 输入:nums [2,7,11,15], target 9 输出:[2,7] 或者 …

一文带你快速了解【在树莓派上搭建web网站---并在外网可访问】

文章目录 概述使用 Raspberry Pi Imager 安装 Raspberry Pi OS测试 web 站点安装静态样例站点 将web站点发布到公网安装 Cpolarcpolar进行token认证生成cpolar随机域名网址生成cpolar二级子域名将参数保存到cpolar配置文件中测试修改后配置文件配置cpolar服务开机自启动 概述 …

Gson 添加数据默认值问题记录

问题:在用Gson add(key(string类型),value(必须是JsonElement子类))时发现,value 传了 "" 空字符串(非null),默认解析后返回null&#…

机器学习笔记 - 关于GPT-4的一些问题清单

一、简述 据报道,GPT-4 的系统由八个模型组成,每个模型都有 2200 亿个参数。GPT-4 的参数总数估计约为 1.76 万亿个。 近年来,得益于 GPT-4 等高级语言模型的发展,自然语言处理(NLP) 取得了长足的进步。凭借其前所未有的规模和能力,GPT-4为语言 AI​​设立了新标准,并为机…

11. 使用tomcat中碰到的一些问题

文章目录 问题一:Tomcat的startup.bat启动后出现乱码问题二:一闪而退之端口占用问题三:非端口问题的一闪而退问题四:服务器的乱码和跨域问题问题五: 在tomcat\webapps\下创建文件夹为什么tomcat重启就会丢失问题六:Tom…

18 | 基于DDD的微服务设计实例

为了更好地理解 DDD 的设计流程,这篇文章会用一个项目来带你了解 DDD 的战略设计和战术设计,走一遍从领域建模到微服务设计的全过程,一起掌握 DDD 的主要设计流程和关键点。 项目基本信息 项目的目标是实现在线请假和考勤管理。功能描述如下…

适配器模式(C++)

定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 应用场景 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象 ”放在新的环境中应用,但是新环境要求…

Codeforces Round 890 (Div. 2) D. More Wrong(交互题 贪心/启发式 补写法)

题目 t(t<100)组样例&#xff0c;长为n(n<2000)的序列 交互题&#xff0c;每次你可以询问一个区间[l,r]的逆序对数&#xff0c;代价是 要在的代价内问出最大元素的位置&#xff0c;输出其位置 思路来源 neal Codeforces Round 890 (Div. 2) supported by Constructo…

python:isdigit()、isalpha()、isalnum() 三个函数的区别和注意点

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 一、isdigit() python关于 isdigit() 内置函数的官方定义&#xff1a; S.isdigit() -> bool Return True if all characters in S are digitsand there is at least one character in S, False otherwise.翻…

文心一言 VS 讯飞星火 VS chatgpt (72)-- 算法导论7.1 3题

三、请简要地证明:在规模为 n 的子数组上&#xff0c;PARTITION 的时间复杂度为 Θ(n)。 文心一言&#xff1a; 首先&#xff0c;我们需要明确PARTITION函数的具体定义。PARTITION函数通常用于快速排序算法中&#xff0c;它将一个数组分为两个子数组&#xff0c;使得一个子数…

【TypeScript】交叉类型联合类型(四)

【TypeScript】交叉类型&联合类型&#xff08;四&#xff09; 【TypeScript】交叉类型&联合类型&#xff08;四&#xff09;一、简介二、交叉类型2.1 交叉类型使用的注意点2.2 基本数据类型交叉2.3 对象类型交叉 三、联合类型四、类型缩减 一、简介 TypeScript 中的交…

【二】SPI IP核的使用

【一】SPI IP核使用&#xff1a;传送门 基于qsys通过spi外部总线协议对sd卡进行读写操作 一、实验平台与实验的目的&#xff1a; ​ 正点原子开拓者、芯片型号&#xff1a;EP4CE10F17C8&#xff1b;还需要一张sd卡。 ​ 该实验主要是利用SPI IP核驱动SD卡来实现读写实验&am…

主成分分析学习笔记

概述 主成分分析&#xff08;Principal Component Analysis&#xff09;是一种常见的数据分析方式&#xff0c;常用于高维数据的降维&#xff0c;提取数据的主要特征分量&#xff0c;其数学推导可以从最大可分性和最近重构性两个角度着手&#xff0c;前者的优化条件为划分后方…

MySQL-NoSQL整体笔记---持续输出中

MySQL部分 一、搭建 MySQL 数据库服务器 1、下载并上传glibc版本的Mysql 2、新建用户以安全方式运行进程 [roottemplate ~]# groupadd -r -g 306 mysql [roottemplate ~]# useradd -g 306 -r -u 306 mysql3、安装并初始化mysql [roottemplate ~]# tar xf mysql-5.7.36-linu…

【Azure Developer】使用 Microsoft Graph API 获取 AAD User 操作示例

问题解答 使用Microsoft Graph API&#xff0c;演示如何获取AAD User信息&#xff0c;因参考文档是针对Global Azure&#xff0c;所以文档种的URL为&#xff1a; // Global Azure Microsoft Graph API Host GET https://graph.microsoft.com/v1.0/me 需要修改为 // 中国区A…

iperf 安装与使用

iperf命令是一个网络性能测试工具&#xff0c;可以测试TCP和UDP带宽质量。同时也可以通过UDP测试报告网丢包率或者发包性能&#xff0c;是一个非常实用的工具 1.windwos安装 可以直接通过官网下载对应系统版本进行安装&#xff08;https://iperf.fr/iperf-download.php&#…

无涯教程-Perl - each函数

描述 在列表context中调用此函数时,将返回一个由2个元素组成的列表,该列表由哈希的下一个元素的键和值组成,以便您可以对其进行迭代。在标量context中调用时,仅返回哈希中下一个元素的键。 语法 以下是此函数的简单语法- each HASH返回值 在列表context中调用此函数时,将返…

红帽认证前景如何,有什么优势?

红帽Linux认证优势: RedHat是全球最大的开源技术厂家&#xff0c;是世界领先的开源解决方案供应商&#xff0c;其产品RedHat Enterprise Linux&#xff08;红帽企业级 Linux&#xff09;也是全世界应用最广泛的Linux。 作为检验Linux技能的黄金标准&#xff0c; RHCE认证项目已…

农商行基于分类分级的数据安全管控建设实践

《数据安全法》颁布实施以来&#xff0c;以分类分级为基础&#xff0c;对数据进行差异化管理和防护&#xff0c;成为行业共识。 金融行业作为数据密集的高地&#xff0c;安全是重中之重&#xff0c;而鉴于金融数据种类和内容庞杂&#xff0c;面临规模化用数、普惠用数、跨机构共…

Selenium自动化测试之学会元素定位

这是我经常被问到的一个问题&#xff0c;也是我很讨厌回答的问题&#xff0c;因为要想回答这个问题需要知道上下文。什么样式的元素&#xff0c;有哪些属性&#xff0c;是否有表单嵌套&#xff0c;都尝试了哪些定位方法。。。而且没几个提问者能事先详细的说明这些。哪儿像提bu…