mockJs基础用法示例

什么是mockJs

生成随机数据,拦截 Ajax 请求

参考文档:Mock.js

为什么使用mockJs

如果后端接口还未开发完成,我们自己手动模拟后端接口返回随机数据完成交互功能

  1. 采用json数据模拟,生成数据比较繁琐,也比较有局限性,没办法达到增删改查
  2. 采用mockJs进行模拟数据,可以模拟各种场景(get、post)生成接口,并且随机生成所需数据,还可以对数据进行增删改查

使用mockJs

通过vue-cli创建基本项目

  • 在项目中安装mock

    npm install mockjs
    
  • 在项目中新建mock文件夹,在mock文件夹中创建index.js

    //引入mock模块
    import Mock from 'mockjs';
    
    var data = Mock.mock({
        // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
        'list|1-10': [{
            // 属性 id 是一个自增数,起始值为 1,每次增 1
            'id|+1': 1
        }]
    })
    // 输出结果
    console.log(JSON.stringify(data, null, 4))
    

mock语法

生成字符串

  • 生成指定次数字符串

    const data = Mock.mock({
        "string|4": "yx!"
    })
    console.log(data)
    
  • 生成指定范围长度字符串

    const data = Mock.mock({
        "string|1-8": "yx"
    })
    console.log(data)
    

生成文本

  • 生成一个随机字符串

    const data = Mock.mock({
        "string": "@cword"
    })
    console.log(data)
    
  • 生成指定长度和范围

    const data = Mock.mock({
        string: "@cword(1)",
        str: '@cword(10,15)'
    })
    console.log(data)
    

生成标题和句子

  • 生成标题和句子

    const data = Mock.mock({
        title: "@ctitle",
        sentence: '@csentence'
    })
    console.log(data)
    
  • 生成指定长度的标题和句子

    const data = Mock.mock({
        title: "@ctitle(8)",
        sentence: '@csentence(50)'
    })
    
  • 生成指定范围的

    const data = Mock.mock({
        title: "@ctitle(5,8)",
        sentence: '@csentence(50,100)'
    })
    console.log(data)
    

生成段落

  • 随机生成段落

    const data = Mock.mock({
        content: '@cparagraph()' 
    })
    console.log(data)
    

生成数字

  • 生成指定数字

    const data = Mock.mock({
        "number|80": 1
    })
    console.log(data)
    
  • 生成范围数字

    const data = Mock.mock({
        "number|1-999": 1
    })
    console.log(data)
    

生成增量id

  • 随机生成标识

    const data = Mock.mock({
        id: '@increment()'
    })
    console.log(data)
    

生成姓名-地址-身份证号

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

    const data = Mock.mock({
        name: '@cname()',
        idCard: '@id()',
        address: '@city(true)' // 如果@city(),只会生成市,如果@city(true)会生成省和市
    })​
    console.log(data)
    

随机生成图片

  • 生成图片:

  • 参数1:图片可选大小

  • 参数2:图片背景色

  • 参数3:图片前景色

  • 参数4:图片格式

  • 参数5:图片文字

      const data = Mock.mock({
          image: "@image('300x300', '#50B347', '#FFF', 'Mock.js')"
      })
      console.log(data)
    

生成时间

  • @Date

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

    const time = Mock.mock({
        time1: '@date()', // 只有年月日
        time2: '@date(yyyy-MM-dd hh:mm:ss)'
    })
    console.log(time) 
    

指定数组返回的条数

  • 指定长度:'data|5'

  • 指定范围:'data|5-10'

    const data = Mock.mock({
        'list|50-99':[
            {
                name: '@cname()',
                address: '@city(true)',
                id: '@increment(1)' // 每次都增加1
            }
        ]
    })
    

mock拦截请求

  • 在项目中安装axios

    npm install axios
    
  • 在 main.js 文件引入

    import axios from 'axios'
    
  • 在mock文件夹的index.js文件中写mock语法

定义不携带参数的get请求

Mock.mock('/api/get/user','get',()=>{
    return {
        status: 200,
        message: '获取新闻列表数据成功'
    }
})

定义post请求

Mock.mock('/api/post/user','post',()=>{
    return {
        status: 200,
        message: '添加新闻列表数据成功'
    }
})
  • 在 App.vue 文件发送请求
<template>
  <div id="app">
    
  </div>
</template>

<script>
export default {
  created() {
        axios.get('/api/get/user')
          .then(function (response) {
          console.log(response);
       }),

        axios.post('/api/post/user')
          .then(res => console.log(res)),
    }
}
</script>

<style lang="less" scoped>

</style>

猜你喜欢

转载自blog.csdn.net/qq_41887214/article/details/121527260