前后端分离开发开发过程当中,经常会遇到以下几个尴尬的场景:
Mock = 生成模拟数据
引用官方的解释
Mock.js is a simulation data generator to help the front-end to develop and prototype separate from the back-end progress and reduce some monotony particularly while writing automated tests.
Mock.js 是一个模拟数据的生成器,用来帮助前端调试开发、进行前后端的原型分离以及用来提高自动化测试效率。
方法 | 含义 |
---|---|
Mock.mock( template ) | 根据数据模板生成模拟数据。 |
Mock.mock( rurl, template ) | 记录数据模板。当拦截到匹配 rurl 的 Ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据返回。 |
Mock.mock( rurl, function( options ) ) | 记录用于生成响应数据的函数。当拦截到匹配 rurl 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。 |
Mock.mock( rurl, rtype, template ) | 记录数据模板。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据返回。 |
Mock.mock( rurl, rtype, function( options ) ) | 记录用于生成响应数据的函数。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。 |
Mock.Random 是一个工具类,用于生成各种随机数据。
方法 | 含义 |
---|---|
Random.boolean( min?, max?, current? ) | 返回一个随机的布尔值。 |
Random.natural( min?, max? ) | 返回一个随机的自然数(大于等于 0 的整数)。 |
Random.integer( min?, max? ) | 返回一个随机的整数。 |
Random.float( min?, max?, dmin?, dmax? ) | 返回一个随机的浮点数。 |
Random.character( pool? ) | 返回一个随机字符 |
Random.string( pool?, min?, max? ) | 返回一个随机字符串。 |
方法 | 含义 |
---|---|
Random.date(format) | 返回一个随机的日期字符串。 |
Random.time( format? ) | 返回一个随机的时间字符串。 |
Random.datetime( format? ) | 返回一个随机的日期和时间字符串。 |
Random.now( unit?, format? ) | 返回当前的日期和时间字符串。 |
方法 | 含义 |
---|---|
Random.image( size?, background?, foreground?, format?, text? ) | 生成一个随机的图片地址。 |
Random.dataImage( size?, text? ) | 生成一段随机的 Base64 图片编码。 |
方法 | 含义 |
---|---|
Random.paragraph( min?, max? ) | 随机生成一段文本。 |
Random.cparagraph( min?, max? ) | 随机生成一段中文文本。 |
Random.sentence( min?, max? ) | 随机生成一个句子,第一个单词的首字母大写。 |
Random.csentence( min?, max? ) | 随机生成一段中文文本。 |
Random.word( min?, max? ) | 随机生成一个单词。 |
Random.cword( pool?, min?, max? ) | 随机生成一个汉字。 |
Random.title( min?, max? ) | 随机生成一句标题,其中每个单词的首字母大写。 |
Random.ctitle( min?, max? ) | 随机生成一句中文标题。 |
方法 | 含义 |
---|---|
Random.first() | 随机生成一个常见的英文名。 |
Random.last() | 随机生成一个常见的英文姓。 |
Random.name( middle? ) | 随机生成一个常见的英文姓名。 |
Random.cfirst() | 随机生成一个常见的中文名。 |
Random.clast() | 随机生成一个常见的中文姓。 |
Random.cname() | 随机生成一个常见的中文姓名。 |
方法 | 含义 |
---|---|
Random.url( protocol?, host? ) | 随机生成一个 URL。 |
Random.protocol() | 随机生成一个 URL 协议。 |
Random.domain() | 随机生成一个域名。 |
Random.tld() | 随机生成一个顶级域名(Top Level Domain)。 |
Random.email( domain? ) | 随机生成一个邮件地址。 |
Random.ip() | 随机生成一个 IP 地址。 |
方法 | 含义 |
---|---|
Random.region() | 随机生成一个(中国)大区。 |
Random.province() | 随机生成一个(中国)省(或直辖市、自治区、特别行政区)。 |
Random.city( prefix? ) | 随机生成一个(中国)市。 |
Random.zip() | 随机生成一个邮政编码(六位数字)。 |
Mock.js 的语法规范包括两部分:
特点
数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:
// 属性名 name
// 生成规则 rule
// 属性值 value
'name|rule': value
示例:
var template = {
"string|5": "*",
"number|1-10.1-10": 1,
"bool|1-2": true,
"array|5": [{
"id|+1": 1
}],
"object|1-3": {
"p1": 1,
"p2": 2,
"p3": 3,
"p11": 1,
"p22": 2,
"p33": 3
}
}
Mock.mock(template)
// =>
{
"string": "*****",
"number": 6.677,
"bool": false,
"array": [
{
"id": 1
},
{
"id": 2
},
{
"id": 3
},
{
"id": 4
},
{
"id": 5
}
],
"object": {
"p22": 2,
"p1": 1
}
}
属性值是函数 Function
'name': function
执行函数 function
,取其返回值作为最终的属性值,函数的上下文为属性 'name'
所在的对象。
属性值是正则表达式 RegExp
'name': regexp
根据正则表达式 regexp
反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
Mock.mock({
'regexp1': /[a-z][A-Z][0-9]/,
'regexp2': /\w\W\s\S\d\D/,
'regexp3': /\d{5,10}/
})
// =>
{
"regexp1": "pJ7",
"regexp2": "F)\fp1G",
"regexp3": "561659409"
}
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
占位符 的格式为:
@占位符
@占位符(参数 [, 参数])
注意:
@
来标识其后的字符串是 占位符。Mock.Random
中的方法。Mock.Random.extend()
来扩展自定义占位符。Mock.mock({
name: {
first: '@FIRST',
middle: '@FIRST',
last: '@LAST',
full: '@first @middle @last'
}
})
// =>
{
"name": {
"first": "Charles",
"middle": "Brenda",
"last": "Lopez",
"full": "Charles Brenda Lopez"
}
}
略
引用官方文档上的说明:
在前后端分离的开发模式下,我们通常需要定义一份接口文档来规范接口的具体信息。如一个请求的地址、有几个参数、参数名称及类型含义等等。RAP 首先方便团队录入、查看和管理这些接口文档,并通过分析结构化的文档数据,重复利用并生成自测数据、提供自测控制台等等… 大幅度提升开发效率。
RAP集中解决了两个问题:
比如:
rap帮我们搭建了一个mock服务器,根据定义好的接口数据生成可以直接访问的接口,并返回相应的mock模版数据。
RAP提供了 Mock插件
(暂时仅支持Kissy和jQuery),使用只需要一步。
将以下代码写在KISSY或jQuery js代码之后即可:
<script type="text/javascript" src="http://{{domainName}}/rap.plugin.js?projectId={{projectId}}&mode={{mode}}">script>
必选参数:
{{projectId}}
为用户所编辑的接口在RAP中的项目ID可选参数:
{{mode}}
为RAP路由的工作模式, 默认值为3。{{disableLog}}
为true时会禁止向控制台输出log,仅保留必要部分,默认为falsemode不同值的具体含义如下:
白名单会根据RAP中已经编辑的接口文档,自动配置,RAP中未录入的接口不会做拦截
您也可以通过调用RAP给出的JS API,手动设置黑名单、白名单及查看、设置工作模式
RAP.setBlackList(arr);
RAP.setWhiteList(arr);
其中arr可以包含匹配字符串,或正则对象,例:[‘test’, /test/g]
RAP.getMode();
RAP.setMode(1);
后续:rap相关,包括,后端工具,自动化测试,rap开放的API