根据规则生成随机数据, 通过拦截ajax 请求实现 模拟前端数据接口
// yarn
yarn add mockjs // 注意 js前没有 . 分割
// npm
npm --save-dev mockjs根据数据模板生成对应的随机数据工具函数, 调用具体的类型函数生成对应的数据检验数据是否与数据规则匹配以 JSON Schanma 风格输出数据模板import { mock Random } from 'mockjs'
const data = mock({
'name|1': ['Rogan', "Coco", "Park"],
'age|20-40': 1,
'date': Random.Date('yyyy-MM-dd'),
'info': /\w{20, 30}/
})
/*
{
"name": "Park",
"age": 27,
"date": "1975-10-04",
"id": "ERJLRMGD3W"
}
*/
// 作为mock服务
// mockData.js
mock('url', 'meth', 'template')
mock('/api/user', 'get', {
"name": Random.cname(),
'age|10-20': 1
})
// vue 中使用 aixos 调用mock接口
import './mockData.js'
async loadList(){
let { data } = await http.get('/api/usser')
this.list = data.list
}作为mock 服务时, 是通过拦截浏览器的ajax请求实现的, 所以无法在node内通过 aixos 访问mock服务数据,
mock数据的生成不受限制
// 基本模式
[属性名称] | [生成规则] : [初始值]/[配置值]/@[属性名]
{ 'age|20-40': 1 }
// 占位符, 表示使用已有结构的数据模式
@[属性名]
{
'fName': Random.first(),
'lName': Random.last(),
'fullName': '@fName @lName'
}官方完整例子
官方例子已经很清晰, 查看础例子,参照写就没问题,数组重复数据的地方需要多尝试
随机布尔值 Random.boolean( min?, max?, current? )Random.boolean() // 50% 几率返回 true / false
Random.boolean( 10, 100, true ) // 10%几率返回trueRandom.natural( min?, max?)// 无取值范围
Random.natural()
// 有取值范围
Random.natural(1, 5)随机浮点数 Random.float( min?, max?, dmin?, dmax? )// 不带区间
Random.float()
//带区间
Random.float(1,3,4,6) // 2.5随机字符串 Random.string( pool?, min?, max? )// 固定长度
Random.string(2) // ab
// 长度区间
Random.string(2, 10) // aci@
// 根据字符集取值
Random.string("abcdefj", 1, 3) // cdf获取时间 Random.time( format? )Random.time("yyyy-mm-dd hh:mm:ss") // -> "1971-06-12 04:50:12"获取当前时间 Random.now( unit?, format? )Random.now("yyyy-mm-dd") // 2019-02-27随机Base64图片 Random.dataImage( size?, text? )Random.dataImage("200x300", "Hello Wolrd") // png格式获取定制图片地址 Random.image( size?, background?, foreground?, format?, text? )
size: 尺寸 "100*200"
background: 背景色 "#000000"
foregroundv: 前景色 "#FFFFFF"
format: 格式为 png
text: 内容文字 随机中文文本 Random.cparagraph( min?, max? )随机中文标题 Random.ctitle( min?, max? )对于文字类接口,存在英文版和中文版[c 开头], 例如:title(英文标题) ctitle(中文标题)
获取中文名称 Random.cname()链接地址 Random.url( protocol?, host? )Random.url('http') // "http://emcmqmabcd.ne/onfr"邮箱地址 Random.email( domain? )Random.email('nuysoft.com')
// => "h.pqpneix@nuysoft.com"省 Random.province()市 Random.city( prefix? )Random.city()
// => "唐山市"
Random.city(true)
// => "福建省 漳州市"guid token Random.guid()身份证 Random.id()自增数 Random.increment( step? )
step: 自增步长// 模式一
mock({
"users|1-4": [
{
"id": Random.id(),
"name": Random.cname()
}
]
})
// 模式二
const user = mock({
"id": Random.id(),
"name": Random.cname()
})
const users = mock(
{
"users|1-4": user
}
)
/*
模式一与模式二的区别在于,
前者在生成多个数据时, 嵌套内容将多次生成.
后者嵌套内容只是同一内容的拷贝
*/