Mock.js是模拟数据生成器,不需要后端来提供接口数据来进行开发,Mock可以根据数据模板生成随机数据,并且拦截Ajax请求返回模拟数据

安装

npm install mockjs

导入

import Mock from 'mockjs'

通过传入数据模板对象生成数据

const data = Mock.mock({
    'list|10': [{
        "id|+1": 1,
        "name": "@cname",
        "age|18-25": 25
    }]
})
console.log(data)

配置响应数据(当匹配url的ajax请求时,会根据数据模板生成模拟数据,并且作为响应返回,这里通过axios发送get请求)

const Data = Mock.mock('/api/name','get',{
    code: 200,
    data: {
        'list|10': [{
            "id|+1": 1,
            "name": "@cname",
            "age|18-25": 25
        }]
    }
})
axios.get('/api/name').then(
    res => {
        console.log(res.data)
    }
)

也可以传入第二个参数,表示匹配的请求是哪个请求方法的

记录数据模板

const Data = Mock.mock('/api/name',(options) => {
    return {
        code: 200,
        options
    }
})
axios({method: 'get', url: '/api/name' , data: {'name':'chenjunlin'}}).then(
    res => {
        console.log(res.data)
    }
)

配置拦截ajax请求时的行为,目前只有指定响应时间功能,单位毫秒

Mock.setup({
    timeout: '200-500'
})

表示响应时间介于200到500毫秒之间,默认值为10-100

Mock.Random工具类,Random.extend扩展方法(扩展Mock.Random工具类的方法,也能扩展到Mock.mock数据模板)

const Random = Mock.Random
const data1 = Random.cname()
const data2 = Random.email()
console.log(data1,data2)
Random.extend({
    emailall: function(date){
        const emailall = [
            'a@cjlio.com',
            'b@cjlio.com',
            '1@cjlio.com',
            '10001@qq.com',
            '123456@qq.com'
        ]
        return this.pick(emailall)
    }
})
const data3 = Mock.mock({
    'list|3': [{
        'email': '@EMAILALL'
    }]
})
console.log(data3)

校验data数据是否符合数据模板

const template = {
    "id|+1": 1,
    "name": "@cname",
    "age|18-25": 25
}
const data = {
    id: 1,
    name: '小陈',
    age: 20,
    pass: '123456'
}
const abc = Mock.valid(template,data)
console.log(abc)

如果符合返回是空数组,如果不符合,会返回不符合在哪里,这个功能可以验证模拟数据和生产数据是否符合模型,避免模拟数据模型和生产数据模型不同,导致生产事故

将Mock风格的模板转换为json

const template = {
    "id|+1": 1,
    "name": "@cname",
    "age|18-25": 25
}
const abc = Mock.toJSONSchema(template)
console.log(abc)

详细使用方法请看Mockjs官方文档,https://github.com/nuysoft/Mock/wiki