• mock.js的使用


    mockjs是一个方便前端工程师独立于后端开发的插件,能够在不修改既有代码的情况下,拦截ajax/axios请求,返回模拟的响应数据,支持生成多种类型的随机数据。也就是说它能够在后端接口开发落后于前端页面开发时提供假数据供我们测试页面的效果。

    官网 Mock.js

    项目安装并引入mockjs

    npm install mockjs

    项目中新建mock.js文件

    1. //引入mock模块
    2. import Mock from 'mockjs'

    将mock文件在main.js中导入

    1. import Vue from 'vue'
    2. import App FROM './App.vue'
    3. import './util/mock.js'
    4. Vue.config.productionTip = false
    5. new Vue({
    6. render:h => h(App),
    7. }).$mount('#app')

    mock语法

    生成指定次数或指定范围次数字符串

    1. import Mock from 'mockjs'
    2. const data = Mock.mock({
    3. "string|4":"哈哈" //生成4个哈哈字符串
    4. //"string|1-8":"哈哈" 随机生成1-8个哈哈字符串
    5. })

    生成指定长度和范围的随机字符串

    1. const data = Mock.mock({
    2. s:"@cword"//随机生成字符串
    3. string:"@cword(5)"//生成指定长度字符串
    4. str :"@cword(10,15)"//随机生成10-15长度字符串
    5. })

    生成指定长度或指定范围的的标题和句子

    1. const data = Mock.mock({
    2. //title:"@ctitle(8)"
    3. //sentence:"@csentence(50)"
    4. title:"@ctitle(5,8)"
    5. sentence:"@csentence(50,100)"
    6. })

    生成段落

    1. const data = Mock.mock({
    2. //content:"@cparagraph()",
    3. content: '@cparagraph(5,15)'//随机生成 5-15行段落
    4. })

    生成指定数字和生成范围数字

    1. const data = Mock.mock({
    2. //"number|80":1 //生成数字80
    3. "number|1-99":1 //生成1-99的随机数字
    4. })

    生成自增id

    1. const data = Mock.mock({
    2. //id:"@increment"//随机生成id数值
    3. id:"@increment(1)" //生成id起始值为1 且自增的id
    4. })

    随机生成姓名-地址-身份证

    1. const data = Mock.mock({
    2. name:"@cname()"
    3. idCard:"@id()"
    4. address:"@city(true)"
    5. })

    随机生成图片

    1. const data = Mock.mock({
    2. img_url: "@image('250X250','#FFA07A','#FFBBFF','png','hh')"
    3. })

    • 参数1:图片大小
      1. [
      2. '300X250','250X250','240X400','336X280'
      3. '180X150','720X300','468X60','234X60'
      4. '388X31','250X250','240X400','120X40'
      5. '125X125','250X250','240X400','336X280'
      6. ]

      注意使用大写X 不要用*

    • 参数2:图片背景色

    • 参数3:图片前景色

    • 参数4:图片格式

    • 参数5:图片文字

    生成时间

    1. const data = Mock.mock({
    2. date: "@date('yyyy-MM-dd hh:mm:ss')"
    3. })

    生成指定格式时间:@date(yyyy-MM-dd hh:mm:ss)

    生成数组

    • 指定长度:‘date|5’
    • 指定范围:'data|5-10'
    1. const data = Mock.mock({
    2. 'list|50-99':[
    3. {
    4. name:'@cname'
    5. address:'@city(true)'
    6. id:'@increment(1)'
    7. }
    8. ]
    9. })

    mock拦截请求和axios组合使用

    定义get请求

    1. Mock.mock('api/get','get',()=>{
    2. return{
    3. status:200,
    4. message:"获取数据成功"
    5. }
    6. })

    如果axios发送请求携带query

      /api/get/news?id=1$age=18

    1. axios.get('/api/get/news', {
    2. params: {
    3. id:this.id,
    4. age:this.age
    5. }
    6. }).then(res => {
    7. // console.log(res)
    8. })

    通过mock回调函数参数 option.url获取

    1. Mock.mock('api/get','get',(option)=>{
    2. console.log(option)
    3. console.log(option.url)
    4. })

    定义getQuery函数获取指定数组的值

    1. // 根据url获取query参数
    2. const getQuery = (url, name) => {
    3. const index = url.indexOf('?')
    4. if (index !== -1) {
    5. const queryStrArr = url.substr(index + 1).split('&')
    6. for (let i = 0; i < queryStrArr.length; i++) {
    7. const itemArr = queryStrArr[i].split('=')
    8. if (itemArr[0] === name) {
    9. return itemArr[1]
    10. }
    11. }
    12. }
    13. }
    1. Mock.mock(/\/api\/get\/news/, 'get', (option) => {
    2. // 获取传递的参数
    3. const pageindex = getQuery(option.url, 'id')
    4. // 获取数据后对List进行处理后返回
    5. ......
    6. return {
    7. status: 200,
    8. message: '获取新闻列表成功',
    9. list: List,
    10. total: newsList.length
    11. }
    12. })

    定义post请求

    1. Mock.mock('api/post/news','post',()=>{
    2. return{
    3. status:200,
    4. message:"获取数据成功"
    5. }
    6. })

    如果axios发送请求携带data数据

    1. axios.post('/api/add/news', {
    2. id:this.id,
    3. age;this.age
    4. }).then((res) => {
    5. // console.log(res)
    6. })

    通过mock回调函数参数 options.body获取

    1. Mock.mock('/api/add/news', 'post', (options) => {
    2. const body = JSON.parse(options.body)
    3. // console.log(body);
    4. //拿到数据后进行处理
    5. ......
    6. return {
    7. status: 200,
    8. message: '添加成功'
    9. }
    10. })

  • 相关阅读:
    【学习笔记】一般图最大匹配
    Python环境安装
    4.9每日一题(多元抽象复合函数求二阶偏导)
    SpringCloud入门简述
    第十五届蓝桥杯省赛第二场C/C++B组A题【进制】题解(AC)
    使用arthas通过ognl表达式获得spring bean中使用cglib代理的对象中的非静态字段的值
    Java版工程行业管理系统源码-专业的工程管理软件- 工程项目各模块及其功能点清单
    android 下简单侧滑删除、编辑等功能实现
    使用java计算crc校验和
    基于 .NET 6 的轻量级 Webapi 框架 FastEndpoints
  • 原文地址:https://blog.csdn.net/qq_60587956/article/details/126314800