mockjs作用就是,生成随机模拟数据,拦截 ajax 请求,可以对数据进行增删改查。在生成数据时,我们就需要能够熟练使用 mock.js 的语法。

Mockjs 的语法规范包括两部分:数据模板定义规范和数据占位符定义规范。

一、数据模板定义规范

数据模板中的每个属性组成有:属性名、生成规则、属性值。

使用语法为:

"name|rule": value

值得注意的有:

  • 属性名和生成规则之间使用 | 分割。
  • 生成规则是可选参数。
  • 生成规则有 7 种形式。
  • 生成规则含义需要依赖于属性值的类型。
  • 属性值可以指定初始值和类型。

生成规则的格式分别有:

1.1、属性值是类型 String

变量的重复次数是一个随机值。

'name|min-max':string
通过生成一个 string 重复 min 到 max 之间的一个字符串。。 //使用
'name|1-3':'a'
运行结果:生成一个 a 的个数为 1-3 之间的字符串变量。可能的结果有:a、aa 、aaa

直接指定重复次数。

'name|count':string
通过生成一个 string 重复 count 次的一个字符串。。 //使用
'name|3':'a'
运行结果:aaa

1.2、属性值是 Number

生成不断累加的数字。

'name|+1':num
初始值为 num ,生成的属性值自动加 1

生成一个区间数值。

'name|min-max':num
生成一个 min 到 max 之间的数值,num 用来指定类型 //使用
'name|1-3': 1
运行结果:生成一个 1-3 之间的数字。可能的结果有:1、2、3

生成带有小数点的数字。

'name|min-max.dmin-dmax': num
生成一个浮点数,整数部分介于 min 和 max 之间,小数保留 dmin 到 dmax 位。num 用来指定类型。 //使用
'num1|1-10.1-2': 1
运行结果:生成 1-10 之间的带有 1到 2 位小数的浮点数。如:2.1、3.12 等 'num2|5.1-2': 1
生成一个整数部分为 5 ,保留 1 到 2 位小数的浮点数。如:5.1、5.33、5.09 等 'num3|5.2': 1
生成整数为 5 ,保留两位小数的浮点数。如:5.11、5.67 等

1.3、属性值是 Boolean

'name|1': boolean
生成一个随机值,真 假 概率都是一半。 //使用
'isLike|1': true
生成 isLike 的值可能为 true 、false。概率是一样的。
点击并拖拽以移动
'name|min-max': value
随机生成一个布尔值,
值为 value 的概率是 min / (min + max),
值为 !value 的概率是 max / (min + max)。 //使用
'like|1-5': true
生成 true 的 概率为 1/6 。生成 false 的概率为 5/6

1.4、属性值是对象 Object

生成一个指定属性个数的对象。

'obj|num': object
从属性值 object 中,随机选取 num 个属性。 //使用
'obj|2': {
a: '1',
b: '2',
c: '3'
}
运行结果可能为:
{a: "3", b: "2"}
{c: "3", b: "2"}
{a: "3", c: "2"}

生成一个属性个数随机的对象。

'obj|min-max': object
从 object 中 随机选取 min 到 max 个属性,生成一个对象。 //使用
'obj|1-2': {
a: '1',
b: '2',
c: '3'
}
运行结果可能为:
{a: "3"}
{b: "3"}
{c: "3"}
{a: "3", b: "2"}
{c: "3", b: "2"}
{a: "3", c: "2"}

1.5、属性值是数组 Array

取数组中某个元素作为结果。

'arr|1':array
从属性值 array 中随机选取 1 个元素作为结果返回 //使用
'arr|1':[1,2,3]
运行结果为:1、2、3 三种结果

生成新数组。

'arr|min-max': array
通过重复 array 的元素生成新数组,重复次数 min 到 max 。 //使用
'arr|1-2': [ 1,2,3 ]
运行结果为:[ 1,2,3 ] 或 [ 1,2,3,1,2,3 ]
点击并拖拽以移动
'arr|num': array
通过重复 array 的元素生成新数组,重复次数 num 次 。 //使用
'arr|2': [ 1,2,3 ]
运行结果为: [ 1,2,3,1,2,3 ]

1.6、属性值是函数 Function

'name':function
function 返回值作为最终的属性值。 //使用
'name': ()=>{
return 'web learn'
}
运行结果为 web learn

在数据占位符中,属性值是函数有重要的意义。待会会重点解释。

1.7、属性值是正则 RegExp

'name': regexp
根据正则表达式 regexp 反向生成可以匹配的字符串。用于生成自定义格式的字符串 //使用
'reg': /[a-zA-Z0-9]2/
生成大小写字母和数字任意组成的长度为 2 的字符串 'reg':/\d{5,10}/
生成任意的 5 到 10 位的数字字符串

二、数据占位符定义规范

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

使用格式:

@占位符
@占位符(参数 [, 参数]) //使用
'name': "@name",
生成英文名,如:Edward Rodriguez //带有参数
'first':"@name(middle)",
生成带有中间名的英文名 。如:Ruth Paul Robinson 'name': "@cname",
生成中文名

注意:

  • 用 @ 来标识后边的字符串是标识符。
  • 占位符引用的都是 mock.Random 中的方法。
  • 如果需要扩展自定义占位符,可使用 Mock.Random.extend()。
  • 占位符也可以引用 “数据模板” 中的内容。
  • 占位符优先引用数据模板中的属性。
  • 支持相对和绝对路径。
Mock.mock('@string("number", 5)')
生成一个五位数的字符串 Mock.mock('@color')
生成随机的颜色
//等同于
Random.color()

三、使用举例

创建一个 api 接口,返回一个随机生成的数组:

export default [
{
url: "/api/list",
method: "post",
response: ({ url, body }) => {
// body 是post方法时传入的数据
// url 是请求接口,get方法时,也包含传递的参数
return {
code: 200,
message: "ok",
//生成一个数组
// 长度介于 10 到 20 之间
'list|10-20': [{
name:'@cname' //生成中文名
}]
};
}
}
]

占位符引用的都是 Mock.random 内的方法,所以我们可以把上述代码更改为:

'list|10-20': [{
name:Random.cname() //生成中文名
}]

此时我们再查阅的时候,就发现生成的数组内,名字都是一模一样的。如果我们想生成不一样的姓名,该如何解决呢?

解决办法:把属性值更改为函数,将函数的返回值作为最终结果。

'list|10-20': [{
name:()=>{
Random.cname()
}
}]


好了小编今天的文章就到此结束了,喜欢我的可以点个关注哦!

玩转 Mockjs,前端也能跑的很溜的更多相关文章

  1. 玩转【Mock.js】,前端也能跑的很溜

    现在开发已经是前后端分离了,前端和后端可以同时进行开发,互不影响,但是有些时候后端开发的接口慢于前端,导致前端需要等待后端的接口完成才能完成前后端对接,为了解决这个痛点,出现了模拟接口数据的方案,目前 ...

  2. 玩vue+mockjs

    玩vue+mockjs vue中用mock制造模拟接口(本文主要解决坑),一定要看完哦 最近新入职一家公司,后端造接口速度很慢,想来想去还是搞一套模拟接口,来满足开发需求,有人会问,我造一个死数据不就 ...

  3. 专访探探DBA张文升:PG在互联网应用中同样也跑的很欢畅

    张文升认为,PG无论在可靠性和性能方面都不输其它任何关系型数据库   张文升,探探DBA,负责探探的数据库架构.运维和调优的工作.拥有8年开发经验,曾任去哪儿网DBA.   9月24日,张文升将参加在 ...

  4. Mockjs 前端接口数据模拟

    在前后端分离的项目中,通常需要启动一个后台服务器来配合前端项目的接口需求.Mockjs的作用是拦截ajax请求并模拟各种数据返回,让前端开发可以更加自由独立. 安装 npm install mockj ...

  5. 掌握这两个技术点,你可以玩转AppCan前端开发

    “AppCan的前端开发其实非常简单,只要掌握两方面的技术即可.一方面是会使用栅格布局完成UI的界面排版,另外一方面就是使用AppCan MVVM模型来完成整个页面构造和用户操作逻辑.” 在2016A ...

  6. 记作为前端开发人员跑去面试C#.NET

    先谈结果,"秦总",与我面试讨论一个半小时,十分感动,然后拒绝了我. 本月17日16时许,收到邀请,于18日9时到司面试,虽如今仅深入前端领域,皆因曾有1年ASP.NET(C#)的 ...

  7. 重建中国.NET生态系统

    Neuzilla官方微信公众号:搜 架构师联盟 或 neuzilla 我是.NET铁杆粉丝,所以如果你要在评论里跟我撕逼.NET怎么怎么烂,Java.C++.PHP.JavaScript怎么怎么好,我 ...

  8. iOS程序崩溃*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [37.5 nan]'

    今天上班打开昨天的程序运行,昨天跑的很溜的程序今天竟然crash了,好郁闷啊!下面附上crash的栈打印信息: 经过一番调试终于找到了原因,程序crash是因为CALayer的位置中含有不存在的数,就 ...

  9. tomcat jdbc pool

    文中内容主要转自:http://www.open-open.com/lib/view/open1327478028639.html http://www.open-open.com/lib/view/ ...

随机推荐

  1. 【故障公告】突然猛增的巨量请求冲垮一共92核CPU的k8s集群

    非常抱歉,今天下午2点左右开始,博客站点突然猛增的巨量请求让k8s集群的节点服务器不堪重负,造成网站无法正常访问,由此给您带来麻烦,请您谅解. 当时k8s集群一共6台node服务器,2台32核64G, ...

  2. Matplotlib(嵩老师.)

    Matplotlib 库的使用 Matplotlib 库有各种可视化类构成,内部结构复杂,受Matlab启发 matplotlib.pyplot是绘制个类可视化图形的命令子库相当于快捷方式   imp ...

  3. python地理空间(1)--概念引入

    1 python与地理空间分析 1.1 与我们的生活 ushahidi是一个优秀的地理空间地图应用,回寝FQ看一下. ushahidi有一个python库-ushapy 地理空间救灾建模程序是最近比较 ...

  4. SQL Server学习之路:建立数据库、建立表

    1.前言 配置是win10+SQL Server 2012,使用的GUI管理工具是SQL Server 2012自带的SQL Server Management Studio(以下简称SSMS).本系 ...

  5. Unity Ioc 类型初始值设定项引发异常,The type name or alias SqlServer could not be resolved. Please check your configuration file and verify this type name.

    先看一下unity的配置信息 <unity> <typeAliases> <typeAlias alias="IDatabase" type=&quo ...

  6. [loj3342]制作菜品

    当$n-1\le m$,不妨令$d_{1}\le d_{2}\le...\le d_{n}$,则$(n-1)k\le mk=\sum_{i=1}^{n}d_{i}\le d_{1}+(n-1)d_{n ...

  7. [luogu5666]树的重心

    考虑枚举一个点k,求其为重心的方案数暴力的做法是,将其作为根搜索,设最大子树大小为s1,次大为s2,对割掉的子树分类讨论:1.在子树中,分两种情况(都可以用线段树合并来做) (1)从s1中切掉一棵大小 ...

  8. vue 3 学习笔记 (八)——provide 和 inject 用法及原理

    在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传 ...

  9. 洛谷 P5644 - [PKUWC2018]猎人杀(分治+NTT)

    题面传送门 很久之前(2020 年)就听说过这题了,这么经典的题怎么能只听说而亲自做一遍呢 首先注意到每次开枪打死一个猎人之后,打死其他猎人概率的分母就会发生变化,这将使我们维护起来非常棘手,因此我们 ...

  10. nohup使用

    nohup:不挂断运行 在忽略挂起信号的情况下运行给定的命令,以便在注销后命令可以在后台继续运行. 可以这么理解:不挂断的运行,注意并没有后台运行的功能,就是指,用nohup 运行命令可以是命令永远运 ...