环境仿真 - 控制模拟数据 ¶
作者:KK
发表日期:2016.6.25
假如后端说/lottery.do
这个地址是开始抽奖的,返回
{"prize":0}
表示没得奖
而{"prize":7}
这样prize非0的时候就是得奖,值就是奖品ID
那我们就在mock-data/lottery.do.js里执行
module.exports = {
prize : Math.floor(Math.random() * 10) //从0到9之间随机一个奖品ID
};
这样就能实现有时抽中奖,有时抽不中将的效果了
根据GET参数来判断是否中奖 ¶
我给mock服务器全局添加了一个request
对象,可以利用它来做判断决定是否中奖:
var prizeId = 0;
if(request.query.debug != undefined){
prizeId = Math.floor(Math.random() + 1 * 10);
}
module.exports = {
prize : prizeId
};
这个request.query.debug
对应地址上的debug参数,比如'/lottery.do?debug=1'
获取其它GET参数也是这个道理
根据POST参数判断是否中奖 ¶
获取POST参数的办法很简单,就是request.body.key1
这样就是获取POST参数里的key1值了
接下来才是精华 ¶
这是一个专业的数据模拟器,在普通开发中需求不是很强烈,但用起来就会让效果好很多,必要的时候还是靠它才方便
npm install --save-dev mockjs
安装mockjs
模块到项目里
先在gulpfile里写这样的代码试试:
var mocker = require('mockjs');
var data = mocker.mock({
message : '',
code : 0,
'data|3' : [{
'status|0-1' : 1,
'id|855-9999': 1,
name : '@cfirst@cname',
'mobile|13378494691-19378494691' : 1,
email1 : /[a-z0-9]{6,20}@163\.com/,
email2 : '@email',
email_by_random : mocker.Random.email(),
url_by_random : 'http://' + mocker.Random.url(),
ip_by_random : mocker.Random.ip(),
group_name : /[\u4E00-\u9FA5]{3}组/,
last_login : '@DATETIME("2016-MM-dd HH:mm:ss")'
}]
});
console.log(data); //每次输出都不一样
return; //终止后面的gulp代码,只是拿来试试的而已
然后运行起来看看,每次控制台输出的数据都不一样是吧,所以这个mockjs是具有强大的随机数据功能的,并且我们只需要输入一些表达式就可以了,有些数据列表我就会用这个随机数据,比如排行榜,或者游戏大厅这些列表数据,还有实时中奖情况。。。
具体的用法 ¶
要了解mockjs模拟数据的具体表达式请去 [官方文档](https://github.com/nuysoft/Mock/wiki) 看以下章节:
[随机表达式说明](https://github.com/nuysoft/Mock/wiki/Syntax-Specification)
[随机方法说明](https://github.com/nuysoft/Mock/wiki/Mock.Random)