安装:

Node (CommonJS)

# 安装
npm install mockjs
// 使用 Mock
var Mock = require('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.js 的语法规范包括两部分:

  1. 数据模板定义规范(Data Template Definition,DTD)
  2. 数据占位符定义规范(Data Placeholder Definition,DPD)

数据模板定义:


数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:

// 属性名   name
// 生成规则 rule
// 属性值   value
'name|rule': value

注意:

  • 属性名 和 生成规则 之间用竖线 | 分隔。
  • 生成规则 是可选的。
  • 生成规则 有 7 种格式:
    1. 'name|min-max': value
    2. 'name|count': value
    3. 'name|min-max.dmin-dmax': value
    4. 'name|min-max.dcount': value
    5. 'name|count.dmin-dmax': value
    6. 'name|count.dcount': value
    7. 'name|+step': value
  • 生成规则 的含义需要依赖属性值的类型 才能确定。
  • 属性值 中可以含有 @占位符
  • 属性值 还指定了最终值的初始值和类型。

数据占位符定义规范 DPD :

占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。

占位符 的格式为:

@占位符
@占位符(参数 [, 参数])

注意:

  1. 用 @ 来标识其后的字符串是 占位符
  2. 占位符 引用的是 Mock.Random 中的方法。
  3. 通过 Mock.Random.extend() 来扩展自定义占位符。
  4. 占位符 也可以引用 数据模板 中的属性。
  5. 占位符 会优先引用 数据模板 中的属性。
  6. 占位符 支持 相对路径 和 绝对路径
Mock.mock({name: {first: '@FIRST',middle: '@FIRST',last: '@LAST',full: '@first @middle @last'}
})
// =>
{"name": {"first": "Charles","middle": "Brenda","last": "Lopez","full": "Charles Brenda Lopez"}
}

Mock.mock( rurl?, rtype?, template|function( options ) ):

根据数据模板生成模拟数据。

Mock.mock( template )

根据数据模板生成模拟数据。

JSFiddle

Mock.mock( rurl, template )

记录数据模板。当拦截到匹配 rurl 的 Ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据返回。

JSFiddle

Mock.mock( rurl, function( options ) )

记录用于生成响应数据的函数。当拦截到匹配 rurl 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。

JSFiddle

Mock.mock( rurl, rtype, template )

记录数据模板。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据返回。

JSFiddle

Mock.mock( rurl, rtype, function( options ) )

记录用于生成响应数据的函数。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。

JSFiddle

rurl

可选。

表示需要拦截的 URL,可以是 URL 字符串或 URL 正则。例如 /\/domain\/list\.json/'/domian/list.json'

rtype

可选。

表示需要拦截的 Ajax 请求类型。例如 GETPOSTPUTDELETE 等。

template

可选。

表示数据模板,可以是对象或字符串。例如 { 'data|1-10':[{}] }'@EMAIL'

function(options)

可选。

表示用于生成响应数据的函数。

options

指向本次请求的 Ajax 选项集,含有 urltype 和 body 三个属性,参见 XMLHttpRequest 规范。

PS:从 1.0 开始,Mock.js 通过覆盖和模拟原生 XMLHttpRequest 的行为来拦截 Ajax 请求,不再依赖于第三方 Ajax 工具库(例如 jQuery、Zepto 等)。

Mock.setup( settings ):

  • Mock.setup( settings )

配置拦截 Ajax 请求时的行为。支持的配置项有:timeout

settings

必选。

配置项集合。

timeout

可选。

指定被拦截的 Ajax 请求的响应时间,单位是毫秒。值可以是正整数,例如 400,表示 400 毫秒 后才会返回响应内容;也可以是横杠 '-' 风格的字符串,例如 '200-600',表示响应时间介于 200 和 600 毫秒之间。默认值是'10-100'

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

PS:目前,接口 Mock.setup( settings ) 仅用于配置 Ajax 请求,将来可能用于配置 Mock 的其他行为。

Mock.Random:

Mock.Random 是一个工具类,用于生成各种随机数据。

Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数]) 。

var Random = Mock.Random
Random.email()
// => "n.clark@miller.io"
Mock.mock('@email')
// => "y.lee@lewis.org"
Mock.mock( { email: '@email' } )
// => { email: "v.lewis@hall.gov" }

扩展

Mock.Random 中的方法与数据模板的 @占位符 一一对应,在需要时还可以为 Mock.Random 扩展方法,然后在数据模板中通过 @扩展方法 引用。例如:

Random.extend({constellation: function(date) {var constellations = ['白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座']return this.pick(constellations)}
})
Random.constellation()
// => "水瓶座"
Mock.mock('@CONSTELLATION')
// => "天蝎座"
Mock.mock({constellation: '@CONSTELLATION'
})
// => { constellation: "射手座" }

Mock.valid( template, data ):

  • Mock.valid( template, data )

校验真实数据 data 是否与数据模板 template 匹配。

template

必选。

表示数据模板,可以是对象或字符串。例如 { 'list|1-10':[{}] }'@EMAIL'

data

必选。

表示真实数据。

var template = {name: 'value1'
}
var data = {name: 'value2'
}
Mock.valid(template, data)
// =>
[{"path": ["data","name"],"type": "value","actual": "value2","expected": "value1","action": "equal to","message": "[VALUE] Expect ROOT.name'value is equal to value1, but is value2"}
]

Mock.toJSONSchema( template ):

  • Mock.toJSONSchema( template )

把 Mock.js 风格的数据模板 template 转换成 JSON Schema。

template

必选。

表示数据模板,可以是对象或字符串。例如 { 'list|1-10':[{}] }'@EMAIL'

var template = {'key|1-10': '★'
}
Mock.toJSONSchema(template)
// =>
{"name": undefined,"path": ["ROOT"],"type": "object","template": {"key|1-10": "★"},"rule": {},"properties": [{"name": "key","path": ["ROOT","key"],"type": "string","template": "★","rule": {"parameters": ["key|1-10", "key", null, "1-10", null],"range": ["1-10", "1", "10"],"min": 1,"max": 10,"count": 3,"decimal": undefined,"dmin": undefined,"dmax": undefined,"dcount": undefined}}]
}
var template = {'list|1-10': [{}]
}
Mock.toJSONSchema(template)
// =>
{"name": undefined,"path": ["ROOT"],"type": "object","template": {"list|1-10": [{}]},"rule": {},"properties": [{"name": "list","path": ["ROOT", "list"],"type": "array","template": [{}],"rule": {"parameters": ["list|1-10", "list", null, "1-10", null],"range": ["1-10", "1", "10"],"min": 1,"max": 10,"count": 6,"decimal": undefined,"dmin": undefined,"dmax": undefined,"dcount": undefined},"items": [{"name": 0,"path": ["data", "list", 0],"type": "object","template": {},"rule": {},"properties": []}]}]
}

Mockjs-官网学习总结相关推荐

  1. PCL官网学习OpenNI Grabber 调用奥比中光Astra s 遇到问题openni2_grabber.cpp @ 325 : No devices connected.

    PCL官网学习OpenNI Grabber 调用奥比中光Astra s 遇到问题openni2_grabber.cpp @ 325 : No devices connected. 问题描述 termi ...

  2. Spring AOP官网学习

    Spring AOP官网学习 5.1 AOP概念 让我们从定义一些核心的AOP概念和术语开始.这些术语并不是spring特有的.不幸的是,AOP术语不是特别直观. 1.Aspect(方面):跨多个类的 ...

  3. postgresql 官网学习文档

    pg数据官网学习文档,PostgreSQL: Documentation 中文版:文档目录/Document Index: 世界上功能最强大的开源数据库...

  4. Spring官网学习(一)概述

    文章目录 1.Spring官网简介 2.Spring总览 2.1.什么是Spring 2.2.Spring的发展历程 3.Spring的设计理念 3.1.Spring的优点 4.IOC和AOP浅析 4 ...

  5. Angular官网学习笔记

    Angular官网学习笔记 一.Angular概述 **什么是Angular:**一个基于TypeScript构建的开发平台包括: 一个基于组件的框架,用于构建可伸缩的Web应用 一组完美集成的库,涵 ...

  6. knockout+html绑定,Knockout.Js官网学习(style绑定、attr绑定)

    Style绑定 style绑定是添加或删除一个或多个DOM元素上的style值.比如当数字变成负数时高亮显示,或者根据数字显示对应宽度的Bar.(注:如果你不是应用style值而是应用CSS clas ...

  7. 如何学习一个新的计算机概念(协议等),如snmp? 上官网学习【官网集合】

    snmp学习,不要仅仅只在百度上翻阅.要养成习惯,去snmp的官网,读英文官方文档.这里会有一手的教程.源代码.命令行. Qt官网:https://www.qt.io .https://doc.qt. ...

  8. Vue 官网学习笔记

    VUE介绍 vue git 地址:https://github.com/vuejs/vue/projects Vue 官网教程地址:https://cn.vuejs.org/v2/guide/inst ...

  9. Vue官网学习(模板语法:一、{{}}双大括号语法)

    Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析 ...

  10. 【PostgreSQL】官网学习使用 PL/pgSQL编写造数据脚本

    文章目录 1. 前言 2. 成果 3. 创建与使用类似 Java map 的数据结构 3.1 声明数组 3.2 数组赋值 3.3 数组遍历 4. 如何打印调试信息 (可以用来生成回滚语句) 5. 后记 ...

最新文章

  1. Dubbo下载-从missing artifactId说起
  2. 浅谈移动端中的视口(viewport)
  3. 如何理解《瓦尔登湖》?
  4. python整数浮点数复数类型判断函数_Python数值类型(整形、浮点型和复数)及其用法讲解...
  5. wx-jq:一套完全原创的微信小程序插件集合库
  6. python课设带报告_python实时投票系统的课设报告
  7. mysql语句怎么拼接字符串_MySQL执行拼接字符串语句实例
  8. 2、ARM嵌入式系统:LED初始化
  9. 相亲也内卷?被程序员的相亲规划整不会了......
  10. 搜狗站群排名优化之搜狗批量推送工具
  11. unix网络编程中的fd是什么
  12. mac快捷键:轻松提升mac使用效率
  13. 免费比对工具DiffMerge
  14. 皮尔逊相关性系数和热力图
  15. chmod命令用法(linux中chmod命令用法)
  16. 汪子嵩:论有、存在与是(如是——真如)
  17. 招聘季如何面试软件测试岗位?超全面试题分享
  18. 对话系统论文集(1)-BBQ网络
  19. 华为路由器与交换机的基础命令
  20. Forter在Frost Sullivan的2020 Radar报告中被评为电子商务的防欺诈领导者

热门文章

  1. Abaqus6.14+VS2013+IVF2013安装教程
  2. Python自动化操作Excel绘制条形图!
  3. 单片机数据上传到阿里云物联网平台后,如何在手机端和网页端获取获取数据?
  4. OKK集中生产加工中心(MC)的主要部品
  5. Word排版计算机类科研论文的格式保证
  6. 英伟达3090Ti旗舰显卡,21Gbps速率,450W功耗和新接口
  7. 民办教育未来10年的发展趋势
  8. LPMS-CU2 IMU在 Nvidia Xavier安装配置
  9. qt android 浮动窗口,QT+ 状态栏+核心控件+浮动窗口
  10. 华为将安卓系统迁移到鸿蒙OS,真·国产之光!华为鸿蒙OS发布,从安卓迁移只需要2天...