Mockjs ( 模拟数据 ) 快速入门

mockjs

根据规则生成随机数据, 通过拦截ajax 请求实现 模拟前端数据接口

安装


// yarn
yarn add mockjs // 注意 js前没有 . 分割

// npm
npm --save-dev mockjs


主要模块

  • mock
    根据数据模板生成对应的随机数据

  • Random
    工具函数, 调用具体的类型函数生成对应的数据

  • valid
    检验数据是否与数据规则匹配

  • toJSONSchema
    以 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== 随机布尔值
Random.boolean( min?, max?, current? )
Random.boolean() // 50% 几率返回 true / false
Random.boolean( 10, 100, true ) // 10%几率返回true

  • ==natural== 随机正整数
Random.natural( min?, max?)

// 无取值范围
Random.natural()

// 有取值范围
Random.natural(1, 5)

  • ==float== 随机浮点数
Random.float( min?, max?, dmin?, dmax? )
// 不带区间
Random.float()

//带区间
Random.float(1,3,4,6)  // 2.5

  • ==string== 随机字符串
Random.string( pool?, min?, max? )

// 固定长度
Random.string(2) // ab

// 长度区间
Random.string(2, 10) // aci@

// 根据字符集取值
Random.string("abcdefj", 1, 3) // cdf

  • ==time== 获取时间
Random.time( format? )
Random.time("yyyy-mm-dd hh:mm:ss")  // -> "1971-06-12 04:50:12"

  • ==new== 获取当前时间
Random.now( unit?, format? )

Random.now("yyyy-mm-dd") // 2019-02-27

  • ==dataImage== 随机Base64图片
Random.dataImage( size?, text? )

Random.dataImage("200x300", "Hello Wolrd") // png格式
  • ==image== 获取定制图片地址
Random.image( size?, background?, foreground?, format?, text? )

size: 尺寸 "100*200"
background: 背景色 "#000000"
foregroundv: 前景色 "#FFFFFF"
format: 格式为 png
text: 内容文字 
  • ==cparagraph== 随机中文文本
Random.cparagraph( min?, max? )
  • ==ctitle== 随机中文标题
Random.ctitle( min?, max? )

对于文字类接口,存在英文版和中文版[c 开头], 例如:title(英文标题) ctitle(中文标题)

  • ==cname== 获取中文名称
Random.cname()
  • ==url== 链接地址
Random.url( protocol?, host? )
Random.url('http') // "http://emcmqmabcd.ne/onfr"
  • ==email== 邮箱地址
Random.email( domain? )
Random.email('nuysoft.com')
// => "h.pqpneix@nuysoft.com"
  • ==province==
Random.province()
  • ==city==
Random.city( prefix? )
Random.city()
// => "唐山市"
Random.city(true)
// => "福建省 漳州市"
  • ==guid== guid token
Random.guid()
  • ==id== 身份证
Random.id()
  • ==increment== 自增数
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
    }
)

/*
    模式一与模式二的区别在于, 
    前者在生成多个数据时, 嵌套内容将多次生成.
    后者嵌套内容只是同一内容的拷贝
*/


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352