Mock.js 生成随机数据,拦截 Ajax 请求 mock.js语法规范
Mock.js 生成随机数据,拦截 Ajax 请求
常用案例
- 基础随机内容的生成
Mock.mock({
"data|10": [// 属性 data 的值是一个数组,其中含有50个元素,也可以写成1-50随机生成1到50不定个数的元素
{
"string|1-10": "=", // 随机生成1到10个等号
"string2|3": "=", // 随机生成2个或者三个等号
"number|+1": 0, // 从0开始自增
"number2|1-00.1-3": 1, // 生成一个小数,小数点前面1到10,小数点后1到3位
"boolean": "@boolean( 1, 2, true )", // 生成boolean值 三个参数,1表示第三个参数true出现的概率,2表示false出现的概率
"name": "@cname", // 随机生成中文姓名
"firstname": "@cfirst", // 随机生成中文姓
"int": "@integer(1, 10)", // 随机生成1-10的整数
"float": "@float(1,2,3,4)", // 随机生成浮点数,四个参数分别为,整数部分的最大最小值和小数部分的最大最小值
"range": "@range(1,100,10)", // 随机生成整数数组,三个参数为,最大最小值和加的步长
"natural": "@natural(60, 100)", // 随机生成自然数(大于零的数)
"email": "@email", // 邮箱
"ip": "@ip" ,// ip
"datatime": "@date('yy-MM-dd hh:mm:ss')" // 随机生成指定格式的时间
name: "@cname()", //随机生成一个常见的中文姓名
age: "@integer(20, 30)", //20-30返回一个随机的整数,数字随意更改
gender: "@string('男女', 1)", //在'男女'字符串中随机生成一个
telephone: /^1[0-9]{10}$/, //也可以写正则
email: "@email()", //随机生成一个email
createTime: '@datetime()', //生成日期 1986-08-11 04:34:06
address: "@county(true)", //随机生成一个(中国)县。加true:Random.county()// => "上杭县"Random.county(true)// => "甘肃省 白银市 会宁县"
zip: "@zip()", //随机生成一个邮政编码(六位数字)
memberName: '@cname()', // 随机生成一个中文人名
avatar: function () {
// 生成一个带中文人名的图片
console.log("🚀 ~ file: initDB.js ~ line 2836 ~ memberInit ~ this.memberName", this.memberName)
let bgColor = Random.color();
let text = this.memberName;
return Random.image('600x600', bgColor) + '&text=' + encodeURIComponent(text);
return Random.image('600x600', bgColor) + '&text=' + _m.encode(text);
},
openTime: '@datetime()', //随机生成一个时间
endTime: function () {
// 根据一个时间,生成后一个时间
let time = new Date(this.openTime).getTime() + Random.integer(2592000000, 3592000000);
return _m.parseTime(new Date(time)) ;
},
area: '@county(true)', //随机生成一个具有省县的地址
address: function(){
// 生成一个家庭地址
return '' + Random.region() + Random.integer(1, 10) + '单元' + Random.integer(100, 1000) + '室';
},
// ......
}
]
});
- 列表数据
{
"code": "0000",
"data": {
"pageNo": "@integer(1, 100)",
"totalRecord": "@integer(100, 1000)",
"pageSize": 10,
"list|10": [{
"id|+1": 1,
"name": "@cword(10)",
"title": "@cword(20)",
"descript": "@csentence(20,50)",
"price": "@float(10,100,10,100)"
}]
},
"desc": "成功"
}
- 图片
mockjs可以生成任意大小,任意颜色块,且用文字填充内容的图片,使我们不用到处找图片资源就能轻松实现图片的模拟展示
"code": "0000",
"data": {
"pageNo": "@integer(1, 100)",
"totalRecord": "@integer(100, 1000)",
"pageSize": 10,
"list|10": [{
// 参数从左到右依次为,图片尺寸,背景色,前景色(及文字颜色),图片格式,图片中间的填充文字内容
"image": "@image('200x100', '#ffcc33', '#FFF', 'png', 'Fast Mock')"
}]
},
"desc": "成功"
安装
npm install mockjs
使用mock模块
// 引入mock模块
const Mock = require('mockjs');
// 随机方法
const Random = Mock.Random;
// 使用Random , 更多方法 http://mockjs.com/examples.html#Random\.cname\(\)
// 随机一个名字
let name = Random.name();
// 随机一个图片 size = ['300x250'];
let size = [
'300x250', '250x250', '240x400', '336x280',
'180x150', '720x300', '468x60', '234x60',
'88x31', '120x90', '120x60', '120x240',
'125x125', '728x90', '160x600', '120x600',
'300x600'
];
let sizeKey = Random.integer(0, size.length-1);
let background = Random.color();
let foreground = Random.color();
let format = ['png','jpg'];
let formatKey = Random.integer(0, format.length-1);
let text = name;
let imags = Random.image(size[sizeKey], background, foreground, format[formatKey], text);
// 生成随机数组
const { data } = Mock.mock({
"data|10": [// 属性 data 的值是一个数组,其中含有50个元素,也可以写成1-50随机生成1到50不定个数的元素
{
name: "@cname()", //随机生成一个常见的中文姓名
age: "@integer(20, 30)", //20-30返回一个随机的整数,数字随意更改
gender: "@string('男女', 1)", //在'男女'字符串中随机生成一个
telephone: /^1[0-9]{10}$/, //也可以写正则
address: "@county(true)", //随机生成一个(中国)县。加true:Random.county()// => "上杭县"Random.county(true)// => "甘肃省 白银市 会宁县"
email: "@email()", //随机生成一个email
zip: "@zip()", //随机生成一个邮政编码(六位数字)
}
]
});
console.log(data); //数据已经生成
mock的语法
mock的语法规范包含两层规范:
- 数据模板 (DTD)
- 数据占位符 (DPD)
数据模板DTD
模板规则:‘name|rule’:value
数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:
// 属性名 name
// 生成规则 rule
// 属性值 value
'name|rule': value
注意:
- 属性名 和 生成规则 之间用竖线 | 分隔。
- 生成规则 是可选的。
- 生成规则 有 7 种格式:
'name|min-max': value 'name|count': value 'name|min-max.dmin-dmax': value 'name|min-max.dcount': value 'name|count.dmin-dmax': value 'name|count.dcount': value 'name|+step': value
- 生成规则 的 含义 需要依赖 属性值的类型 才能确定。
- 属性值 中可以含有
@占位符
。 - 属性值 还指定了最终值的初始值和类型。
生成规则和示例:
- 属性值是字符串 String
//通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。
'name|min-max': string
通过重复 string 生成一个字符串,重复次数等于 count。
'name|count': string
var data = Mock.mock({
'name1|1-3':'a', //重复生成1到3个a
'name2|2':'b' //生成bb
})
- 属性值是数字 Number
//属性值自动加 1,初始值为 number。
'name|+1': number
//生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。
'name|min-max': number
//生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。
'name|min-max.dmin-dmax': number
Mock.mock({
'number1|1-100.1-10': 1,
'number2|123.1-10': 1,
'number3|123.3': 1,
'number4|123.10': 1.123
})
// =>
{
"number1": 12.92,
"number2": 123.51,
"number3": 123.777,
"number4": 123.1231091814
}
var data = Mock.mock({
'name1|+1':4, //生成4,如果循环每次加1
‘name2|1-7':2, //生成一个数字,1到7之间
'name3|1-4.5-8':1
//生成一个小数,整数部分1到4,小数部分5到8位
})
- 属性值是布尔型 Boolean
//随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。
'name|1': boolean
//随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)。
'name|min-max': value
var data = Mock.mock({
'name|1':true, //生成一个布尔值,各一半
'name1|1-3':true //1/4是true,3/4是false
})
- 属性值是对象 Object
//从属性值 object 中随机选取 count 个属性。
'name|count': object
//从属性值 object 中随机选取 min 到 max 个属性。
'name|min-max': object
var obj = {
a:1,
b:2,
c:3,
d:4
}
var data = Mock.mock({
'name|1-3':obj, //随机从obj中寻找1到3个属性,新对象
'name|2':obj //随机从onj中找到两个属性,新对象
})
- 属性值是数组 Array
//从属性值 array 中随机选取 1 个元素,作为最终值。
'name|1': array
//从属性值 array 中顺序选取 1 个元素,作为最终值。
'name|+1': array
//通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。
'name|min-max': array
//通过重复属性值 array 生成一个新数组,重复次数为 count。
'name|count': array
Mock.mock(/api\/test/, {
//通过重复属性值 array 生成一个新数组,重复次数为 1-3次。
"favorite_games|1-3": [3,5,4,6,23,28,42,45],
});
var arr = [1,2,3];
var data = Mock.mock({
'name1|1':arr, //从数组里随机取出1个值
'name2|2':arr, //数组重复count次,这里count为2
'name3|1-3':arr, //数组重复1到3次
})
- 属性值是函数 Function
执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 'name' 所在的对象。
'name': function
var fun = function(x){
return x+10;
}
var data = Mock.mock({
'name':fun(10) //返回函数的返回值20
})
- 属性值是正则表达式 RegExp
根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
'name': 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"
}
var data = Mock.mock({
‘name1':/[a-z][A-Z]/,
'name2':/\d{1,3}/
})
数据占位符DPD
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
占位符 的格式为:
@占位符
@占位符(参数 [, 参数])
关于占位符需要知道以下几点
- 用
@
标识符标识后面的字符串是占位符 - 占位符 引用的是
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"
}
}
//引入mockjs
import Mock from 'mockjs'
const Random = Mock.Random;
//使用mockjs模拟数据
Mock.mock('/api/msdk/proxy/query_common_credit', {
"ret":0,
"data":
{
"mtime": "@datetime",//随机生成日期时间
"score": "@natural(1, 800)",//随机生成1-800的数字
"rank": "@natural(1, 100)",//随机生成1-100的数字
"stars": "@natural(0, 5)",//随机生成1-5的数字
"nickname": "@cname",//随机生成中文名字
}
});
注意:get、post参数获取方式
get
请求如果带参数,会以?a=b&c=d
,形式拼接到url上,这时mock请把接口url写为正则匹配,否则匹配不到就报错(Mock.mock(RegExp(API_URL.LOGIN + ".*")
)
// get 普通匹配:只能匹配到 ${process.env.VUE_APP_API_BASE_URL}/api_admin/table ,这个路径,由于get请求参数是拼接在url后面的,所以这个是匹配不到的,这时我们需要改写成正则匹配
Mock.mock(`${process.env.VUE_APP_API_BASE_URL}/api_admin/table`, 'get', (options) => {
let result = {};
return result;
});
// get 正则匹配:这样get请求,带不带参数就都可以获取到了
Mock.mock(RegExp(`${process.env.VUE_APP_API_BASE_URL}/api_admin/table` + ".*"), 'get', (options) => {
let result = {};
// 这样就可以获取到带参数的完整地址了,自己还需要再写个方法提取参数,网上有很多,mock没有内置
// http://localhost:3333/api_admin/table?userName=admin&passWord=8888889
console.log('mock', options.url);
return result;
});
// get 扩展,如果你每次写正则觉得麻烦,可以提到一个方法里,每次调用即可
/**
* 将url改写成正则模式,mock匹配get请求路由时候使用,因为get请求参数是拼接在url后面,不用正则匹配不到
* @param {String} url
* @returns {RegExp}
*/
function regUrl(url) {
return RegExp(url + ".*");
}
Mock.mock(regUrl(`${process.env.VUE_APP_API_BASE_URL}/api_admin/table`), 'get', (options) => {
let result = {};
// 这样就可以获取到带参数的完整地址了,自己还需要再写个方法提取参数,网上有很多,mock没有内置
// http://localhost:3333/api_admin/table?userName=admin&passWord=8888889
console.log('mock', options.url);
return result;
});
post
请求获取参数,一般普通匹配就满足了,但是极少数会在路径拼接参数,这里就用正则匹配举例
// post 获取参数,一般普通匹配就满足了,但是极少数会在路径拼接参数,这里就用正则匹配举例
Mock.mock(regUrl(`${process.env.VUE_APP_API_BASE_URL}/api_admin/table`), 'post', (options) => {
let result = {};
// options.body 就是post参数
console.log('mock', options.body);
return result;
});
options.body
拿到这个其实就是获取到了参数,由于 post
请求参数方式有多种情况(不知道的可以访问下面链接),后续取值略有不同,相信你应该知道怎么做的。
Mock.mock( rurl?, rtype?, template|function( options ) )
这是mock的核心方法,根据数据模板生成模拟数据。
- rurl ,可选。
表示需要拦截的 URL,可以是 URL 字符串或 URL 正则。例如:正则+变量写法 ->RegExp(API_URL.LOGIN + ".*")
、正则写法 ->/\/domain\/list\.json/
、字符串写法 ->'/domian/list.json'
。 - rtype,可选。
表示需要拦截的 Ajax 请求类型。例如GET
、POST
、PUT
、DELETE
等。 - template,可选。
表示数据模板,可以是对象或字符串。例如{ 'data|1-10':[{}] }
、'@EMAIL'
。 - function(options),可选。
表示用于生成响应数据的函数。
options
指向本次请求的 Ajax 选项集,含有url
、type
和body
三个属性,参见 XMLHttpRequest 规范。
具体的应用情况:
- 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.setup( settings )
配置拦截 Ajax 请求时的行为。支持的配置项有:timeout
。
- settings: 必选。配置项集合。
timeout
可选。指定被拦截的 Ajax 请求的响应时间,单位是毫秒。值可以是正整数,例如 400
,表示 400
毫秒 后才会返回响应内容;也可以是横杠 '-'
风格的字符串,例如 '200-600'
,表示响应时间介于 200 和 600 毫秒之间。默认值是'10-100'
。
Mock.setup({
timeout: 400
})
Mock.setup({
timeout: '200-600'
})
目前,接口 Mock.setup( settings ) 仅用于配置 Ajax 请求,将来可能用于配置 Mock 的其他行为。
Mock.valid(template,data)
这个函数用来判断,数据模板和数据是否一样,
Mock.toJSONSchema( template )
var template = Mock.mock({
'name|1-3':5
})
var tjs = Mock.toJSONSchema(tempalte);
把 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": []
}]
}]
}
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" }
var Random = Mock.Random;
var em1 = Mock.email();
var em2 = Mock.mock('@email');
var em3 = Mock.mock({
email:'@email'
})
方法
Mock.Random 提供的完整方法(占位符)如下:
Type | Method |
---|---|
Basic | boolean, natural, integer, float, character, string, range, date, time, datetime, now |
Image | image, dataImage |
Color | color |
Text | paragraph, sentence, word, title, cparagraph, csentence, cword, ctitle |
Name | first, last, name, cfirst, clast, cname |
Web | url, domain, email, ip, tld |
Address | area, region |
Helper | capitalize, upper, lower, pick, shuffle |
Miscellaneous | guid, id |
类型 | 可能的应用 |
---|---|
Object | 随机选择对象的几个属性 |
Function | 可以自定义函数,根据函数返回值返回(this.foo,this可以直接访问已有规则) |
Path | 可以根据相对路径,绝对路径,使用已有规则来生成新的数据项 |
Date | 可以生成各种格式的时间 |
Image | 可以生成各种测试图片(可以用的在线地址,图片的自定义程度还挺高,用来占位布局再好不过 |
Color | 可以生成随机颜色,rgb、rgba、hex 类型的颜色值都可以 |
Text | 可以随机生成文本段落、指定单词数(中文、英文的都支持),在指定单词里按规则随机组合 |
Name | 可以随机生成名字、姓、名(中英文都支持) |
Web | 可以生成一系列的网址等 |
Address | 可以生成邮编、地址、省份、国家等,还可以指定是否携带上级(哪个省的什么市) |
Miscellaneous | 可以生成id |
Basic
- Random.boolean(min?max?current?)
随机生成布尔值
var bool1 = Random.boolean(); //true false各一半
var bool2 = Random.boolean(1,2,false) //1/3的可能性是false 2/3是true
- Random.natural(min?,max?)
随机生成一个自然数,什么叫自然数,就是大于等于0的
var natural1 = Random.natural(); //默认值最大为 9007199254740992
var natural2 = Random.natural(4); //随机出来的最小值是4
var natural3 = Random.natural(6,9);
- Random.Integer(min?,max?)
生成一个随机的整数,可以是负数。
var integer1 = Random.integer();
var integer2 = Random.integer(-10); //随机最小值是-10
var integer3 = Random.integer(-10,20);
- Random.float(min?,max?,dmin?,dmax?)
随机生成一个小数浮点数,四个参数分别为,整数部分最小值最大值,小数部分最小值最大值。
var float1 = Random.float();
var float2 = Random.float(3,8);
var float3 = Random.float(1,3,5,7)
- Random.character(pool?)
随机生成一个字符,pool的值可以是:
- upper: 26个大写字母
- lower: 26个小写字母
- number: 0到9十个数字
- sympol: "!@#$%^&*()[]"
var character1 = Random.character();
var character2 = Random.character('lower');
var character3 = Random.character('upper');
var character4 = Random.character('symbol');
- Random.string(pool?,min?,max?)
随机生成一个字符串,pool的值同上边四个。
var str1 = Random.string(); //长度3到7位
var str2 = Random.string(5); //长度5位
var str3 = Random.string('lower',7); //长度7位,小写
var str4 = Random.string(4,6); //长度4到
var str5 = Random.string('新的字符串会从这里选择4到5位',4,6); //从第一个参数里选择4到5位
- Random.range(start?,stop,step?)
返回一个整型数组
- start,可选,数组起始值,闭区间
- stop,必选,数据结束值,开区间
- step,可选,数据每一项间隔值
var range1 = Random.range(10); //[0,1,2,3,4,5,6,7,8,9]
var range2 = Random.range(14,20); //[14,15,16,17,18,19]
var range3 = Random.range(3,13,2); //[3,5,7,9,11]
Date
- Random.date(format?)
返回一个随机日期的字符串
format的格式是‘yyyy-MM-dd’,可以随机组合
var date1 = Random.date();
var date2 = Random.date('yyyy-MM-dd');
var date3 = Random.date('y-M-d');
var date4 = Random.date('yy-MM-dd');
- Random.time(format?)
返回时间字符串
format的格式是‘HH-mm-ss’
var time1 = Random.time();
var time2 = Random.time('HH-mm-ss');
var time3 = Random.time('J-m-s');
- Random.datetime(format?)
上边两个的结合版
var dt1 = Random.datetime();
var dt2 = Random.datetime('yyyy-MM-dd HH-mm-ss');
Random.now(unit?,format?)
返回当前时间的字符串
Image
一般情况下,使用dataImage更好,因为更简单,但是如果要生成高度自定义的图片,则最好用image。另外,dataImage生成的是base64编码
- Random.image(size?,background?,foreground?,format?text?)
- size 图片宽高,格式是'宽x高'
- background:图片的背景色,默认值#000000
- foreground:图片的文字前景色,默认#FFFFFF
- format:图片的格式,默认'.png'
- text:图片上的默认文字,默认值为参数size
其中size的取值范围是
[
'300x250', '250x250', '240x400', '336x280',
'180x150', '720x300', '468x60', '234x60',
'88x31', '120x90', '120x60', '120x240',
'125x125', '728x90', '160x600', '120x600',
'300x600'
]
图片的格式可以选择.png
、 .gif
、 .jpg
var image1 = Random.image();
var image2 = Random.image('128x90');
var image3 = Random.image('120x660','#ccc'); //前景色#ccc
var image4 = Random.image('226x280','#eee','第三个参数是文字不是前景色');
var image5 = Random.image('66x31','#ddd','#123456','四个参数的时候第三个参数是前景色');
var image6 = Random.image('240x400','#333','#1483dc','.gif','全部参数的情况下');
- Random.dataImage(size?,text?)
返回一段base64编码,两个参数同上。
var di1 = Random.dataImage();
var di2 = Random.datImage('300x600');
var di3 = Random.dataImage('180x150','hahahaha');
Color
- Random.color()
有好几个相关的方法
var color = Random.color(); 格式'#rrggbb'
var hex = Random.hex(); //好像和color没什么不同
var rgb = Random.rgb(); //生成格式如rgb(133,233,244)
var rgba = Random.rgba(); //生成个事如rgba(111,222,233,0.5)
var hsl = Random.hsl(); //生成格式(345,82,71)
Text
- Random.paragraph(in?,max?,len?)
随机生成一段文本,
var para1 = Random.paragraph(); //随机生成一短文本,范围3到7
var para2 = Random.paragraph(10); //随机生成长度是10的文本
var para3 = Random.paragraph(9,12); //随机生成9到11位长度的文本
- Random.sentence(min?,max?,len?)
随机生成一个句子,第一个单词的首字母大写
var sen1 = Random.sentence(); //默认长度12到18
var sen2 = Random.sentence(10); //随机生成一个单词个数为10的句子
var sen3 = Random.sentence(5,10); //随机生成一个5到9单词个数的句子
- Random.word(min?,max?,len?)
随机生成一个单词
var word1 = Random.word(); //默认长度3到10
var word2 = Random.word(7); //随机生成长度是7的单词
var word3 = Random.word(2,12); //随机生成2到11位长度的单词
- Random.title(min?,max?,len?)
随机生成一段标题,每个单词的首字母大写
var title1 = Random.title(); //title中的单词个数
var title2 = Random.title(6); //title六个单词
var title3 = Random.title(7,12); //title7到11个单词
另外还有四个方法,四个方法前边加一个c
,返回中文内容
Random.cparagraph
, 返回中文文本Random.csentence
, 返回中文句子Random.cword
, 返回中文文字Random.ctitle
, 返回中文标题
Name
var first = Random.first() 随机生成常见英文名
var last = Random.last() 随机生成常见英文姓
var name = Random.name() 随机生成常见英文姓名
var cfirst = Random.cfirst() 随机生成常见中文姓
var clast = Random.clast() 随机生成常见中文名
var cname = Random.cname() 随机生成一个常见中文姓名
Web
- Random.url(protocol?,host?)
随机生成一个url
protocol
可选参数,表示网络协议,如http
。host
表示域名和端口号
var url1 = Random.url();
var url2 = Random.url('http');
var url3 = Random.url('http','58.com');
- Random.protocol()
随机生成一个域名
var protocol = Random.protocol()
protocol可以选的值,'http'、'ftp'、'gopher'、'mailto'、'mid'、'cid'、'news'、'nntp'、'prospero'、'telnet'、'rlogin'、'tn3270'、'wais'。
- Random.domin()
随机生成一个域名
- Random.tld()
随机生成一个顶级域名
var domain = Random.domain()
var tld = Random.tld()
- Random.email(domain?)
随机生成一个email地址,domain表示域名
var email1 = Random.email();
var email2 = Random.email('58.com') //生成xxxx@58.com
- Random.ip()
随机生成一个ip地址
var ip = Random.ip()
Address
- Random.region()
随机生成一个中国的大区,如华北,西南
var region = Random.region();
- Random.province()
随机生成一个中国省直辖市自治区特别行政区
var province = Random.province()
- Random.city(prefix?)
随机生成一个中国城市,prefix布尔值,表示是否标注所在省
var city1 = Random.city();
var city2 = Random.city(ture);
Random.country(prefix?)
随机生成一个中国县,prefix
布尔值,表示是否显示所属的省市
var county1 = Random.county();
var county2 = Random.county(ture);
- Random.zip()
随机生成一个六位数邮政编码
var zip = Random.zip();
Helper
- Random.capitlize(word)
把第一个字母转成大写
var capitalize = Random.capitalize('hello')
- Random.upper(str)
转成大写
var upper = Random.upper('zhang');
- Random.lower(str)
转成小写
var lower = Random.lower('JINGWEI');
- Random.pick(arr)
从数组中随机选取一个元素
var arr = [1,4,5,6,7,8];
var pick = Random.pick(arr);
- Random.shuffle(arr);
打乱数组的顺序并返回
var arr = [1,2,3,4,6];
var shuffle = Random.shuffle(arr);
Miscellaneous
- Random.guid()
随机生成一个GUID
- Random.id()
随机生成一个18位身份证id
var guid = Random.guid();
var id = Random.id();
扩展
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: "射手座" }