IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 前端用Mockjs模拟数据 -> 正文阅读

[JavaScript知识库]前端用Mockjs模拟数据

mockjs可以模拟数据,可以使我们更快的得到较为真实的数据,且可以拦截axios的接口调用,让我们的代码实现了调用接口的逻辑且得到模拟的数据,保存业务完整度。

使用步骤:

1、安装

npm i mockjs

2、配置 src/mock/index.js

? ? ? ? 这里的setup是配置,跟vue3的setup不一样。

import Mock from 'mockjs'

// mock的配置
Mock.setup({
  // 随机延时200-300毫秒,模拟网络延时
  timeout: '500-1000'
})

3、在?src/main.js中使用

import './mock'

4、 模拟接口,拦截请求

? ? ? ? 拦截请求后的三个参数

// 拦截请求,
// 第一个参数:url,使用正则去匹配
// 第二个参数:请求方式
// 第三个参数: 生成数据的函数

????????生成随机数据

// 单个数据
Mock.mock('@integer(0,7)')
// 对象数据
Mock.mock({
    id: '@id',
    name: '@ctitle(2,4)'
})

例一:随机生成简单的数组对象数据

比如拦截 接口路径为 /my/test的接口路径,生成5个对象,里面的数据为随机的id和name。如果想要生成随机的英文名字,则要去掉@cname前面的c。这里的c代表生成中文

import Mock from 'mockjs'

// 拦截接口  /my/test
// 1. 接口地址路径规则,需要匹配到它
// 2. 请求方式
// 3. 返回数据(函数返回数据)
Mock.mock(/\/my\/test/, 'get', () => {
  // 随机数据逻辑 目标:5条数据  [{id:'',name:''},...]
  const arr = []
  for (let i = 0; i < 5; i++) {
    // arr.push(Mock.mock('@id'))
    arr.push(Mock.mock({
      id: '@id',
      name: '@cname'
    }))
  }
  return { msg: '获取数据成功', result: arr }
})

????????当我们调用这个接口时生成的mock数据如下 :

?????????例二:获取分页数据,前端传递每页多少数据,根据传递的数据Mock对应的数据条数返回给前端。

? ? ? ? 1、因为mock会拦截axios的接口调用。所以我们可以从config里面取出url,然后通过?把url分成两部分,后面的部分就是我们携带的参数部分。打印的结果如下,分别为页码,每页显示的数量和商品类型。后端根据pageSize去生成对应的数据条数。

page=1&pageSize=4&collectType=1

? ? ? ? 2、这个时候我们就要取到?queryString 里面的pageSize。所以我们要先把queryString转化为对象的形式。

此时我们可以用node内置的包qs。他是不用

下载的,因为当webpack打包时,它会将项目中运用到的nodejs内置的包也打包进来。作为内置资源的一部分。

获取url里面的数据的方法也可以查看我的另一篇文章,不需要借助依赖

https://blog.csdn.net/m0_45219210/article/details/123377690?spm=1001.2014.3001.5502
用法:(1)先引入qs(2)通过qs.parse()方法去解析queryString。

下图是解析前和解析后的数据样式:

?3、解析的结果为queryObject ,如上图。此时我们可通过queryObject.pageSize去拿到需要mock的数据个数,显然我们的结果都字符串类型,我们可以通过js字符串的隐式转化将其转化为数字类型。即在前面添加+号。然后通过for循环将往数组里面追加(push)mock的数据。从代码可见生成了id,name,desc(描述),price(价格)和picture(图片)。其中图片mock生成的图片比较丑。这里是一个url后面随机生成了一个1到9的整型数据,因为这个是后台的图片url。1到8分别代表9张不同的图片。最后把结果返回出去。

import Mock from 'mockjs'
import qs from 'qs'

// 基本配置
Mock.setup({
  // 随机延时200-300毫秒,模拟网络延时
  timeout: '200-300'
})

// 模拟 我的收藏
Mock.mock(/\/member\/collect/, 'get', config => {
  const queryString = config.url.split('?')[1]
  const queryObject = qs.parse(queryString)
  const items = []
  for (let i = 0; i < +queryObject.pageSize; i++) {
    items.push(Mock.mock({
      id: '@id',
      name: '@ctitle(10,20)',
      desc: '@ctitle(4,10)',
      price: '@float(100,200,2,2)',
      // http://zhoushugang.gitee.io/erabbit-client-pc-static/uploads/clothes_goods_7.jpg
      picture: `http://zhoushugang.gitee.io/erabbit-client-pc-static/uploads/clothes_goods_${Mock.mock('@integer(1,8)')}.jpg`
    }))
  }
  return {
    msg: '获取收藏商品成功',
    result: {
      counts: 35,
      pageSize: +queryObject.pageSize,
      page: +queryObject.page,
      items
    }
  }
})

生成是数据如下 。前端调用/member/collect时就会被mock拦截,然后得到下图所示的数据。前端通过data.result.items拿到数据去渲染。

此时我们就完成了mock数据的全部过程,当后端接口实现时。我们可以 注掉上图第三步

src/main.js文件里面引入mock的那一行代码,就会将请求发往后端。这个时候如果数据正常。我们前端的业务就已经完成了。不需要更改其他代码。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:27:19  更:2022-04-22 18:29:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:00:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码