当前位置:网站首页>使用Mock技术模拟数据
使用Mock技术模拟数据
2022-08-09 18:38:00 【Co-King】
mock数据准备文件
1、mock数据一般存放在项目文件夹src下面的mock文件夹
- 准备好数据文件banner.json 和 floor.json(json文件)并通过mockServe.js进行暴露操作

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"
}
]
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"
}
]
mockServe.js文件 -
// 先引入mockjs模块
import Mock from 'mockjs'
// 将JSON数据引入进来 [JSON数据格式根本没有对外暴露,但是可以引入]
// 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}) //
Mock数据
- 第一个参数:请求地址
- 第二个参数:请求数据
使用axios进行二次封装
在src的文件下的api文件夹下创建mockAjax.js文件 进行二次封装,封装以后需暴露
// 对于axios进行二次封装
import axios from 'axios'
// 引入进度条
import nProgress from 'nprogress'
// 引入进度条的样式
import 'nprogress/nprogress.css'
// start 进度条开始 done 进度条结束
/* 1、利用axios对象的方法create,去创建一个axios实例 2、request就是axios,只不过稍微配置一下 - 这里的requests就是创建的一个新的实例,其实就是axios,不配置的话,直接书写axios.in... 即可 */
/* 二次封装 */
const requests = axios.create({
// 配置对象
// 基础路径, 发请求的时候,路径当中会出现api 对外所进行暴露的内容不一样
baseURL: '/mock',
// 代表请求超时的时间为 5s
timeout: 5000,
})
// 请求拦截器,在发请求之前,请求拦截器可以检测到,可以在请求发出去之前做一些事情
requests.interceptors.request.use((config) => {
// 进度条开始动
nProgress.start()
// config :配置对象,对象里面有一个属性很重要,header请求头
return config
})
// 响应拦截器
axios.interceptors.response.use((res) => {
// 成功的回调函数,服务器响应数据回来以后,响应拦截器可以检测到,可以做一些事情
// 进度条结束
nProgress.done()
return res.data
}, (error) => {
// 相应失败的回调函数
// 对响应错误做点什么
return Promise.reject(error);
})
// 对外暴露
export default requests
/* // 添加请求拦截器 axios.interceptors.request.use(function (config) { // 在发送请求之前做些什么 return config; }, function (error) { // 对请求错误做些什么 return Promise.reject(error); }); // 添加响应拦截器 axios.interceptors.response.use(function (response) { // 对响应数据做点什么 return response; }, function (error) { // 对响应错误做点什么 return Promise.reject(error); }); */
在src文件夹下的api文件夹下创建index.js文件用于书写获取mock数据的方法
import mockRequest from './mockAjax'
// 简写形式
export const reqCategoryList = () => requests({
url: '/product/getBaseCategoryList', method: 'get' })
// 获取banner (Home首页轮播图接口)
export const reqGetBannerList = () => mockRequest.get('/banner')
接着再vuex中使用reqCategoryList 、reqGetBannerList 等接口获取数据操作即可 书写vuex三连环操作
边栏推荐
- CreateCompatibleDC用法
- Qt 5.12 LTS 部署
- [免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)
- Iptables防火墙常见的典型应用场景
- 没有 accept,建立 TCP 连接,可以吗?
- 2022.08.06_每日一题
- laravel报错:TokenMismatchException in VerifyCsrfToken.php line 68:
- ebook download | "Business executives' IT strategy guide - why enterprises should implement DevOps"
- C#/VB.NET: Extract text and pictures from PowerPoint document
- poj 1182 食物链(带权并查集)
猜你喜欢

What is the Treasure Project (TPC), a dark horse with wings in 2022!

【Unity3D】2D动画

放下手机吧:实验表明花20分钟思考和上网冲浪同样快乐
![[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)](/img/86/3123f87d9b88d4fe424b2cf134eb62.png)
[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)
![[免费专栏] Android安全之Android Studion 动态调试APK的两种方法](/img/05/10769eadd2fb3e5249975ac93e48ed.png)
[免费专栏] Android安全之Android Studion 动态调试APK的两种方法

三星旗舰优惠千八,苹果优惠过千,国产旗舰只降五百打发叫花子

华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款

明明加了唯一索引,为什么还是产生重复数据?

工大科雅深交所上市:市值45亿 齐承英家族是大股东
![[免费专栏] Android安全之ZIP文件目录遍历漏洞](/img/11/c9116562b0ce57205e73fc442874d3.png)
[免费专栏] Android安全之ZIP文件目录遍历漏洞
随机推荐
Openharmony Lightweight System Experiment--GPIO Lighting
[免费专栏] Android安全之安卓APK浅析
[免费专栏] Android安全之静态方式逆向APK应用浅析【手动注入smali+】+【IDA Pro静态分析so文件】+【IDA Pro基础使用讲解】
2022深圳(软考高级)信息系统项目管理师认证报名
hdu 2647 Reward(拓扑排序)
[免费专栏] Android安全之ZIP文件目录遍历漏洞
[免费专栏] Android安全之Android奇淫run-as命令
为什么数字钱包需要引入小程序生态
qq机器人账号不能发送群消息,被风控
Go-Excelize API源码阅读(五)—— Close()
pytest框架之mark标记功能详细介绍
[免费专栏] Android安全之Android工程模式
电商项目架构图
最新BEV感知基线 | 你确定需要激光雷达?(卡内基梅隆大学)
IS31FL3737B general 12 x 12 LED drive 40 QFN I2C 42 ma
php删除字符串的空格
全自动化机器学习建模!效果吊打初级炼丹师!
2022深圳(软考中级)系统集成项目管理工程师报名
[Free Column] Android Security for Peace Elite (FZ) APK Reverse Analysis
[免费专栏] Android安全之Android Studion 动态调试APK的两种方法