【Mock.js】前端模拟假数据,不用在手拼了

时间:2017-03-16 16:56:05
作者:zhongxia

一、背景

前后端分离开发的时候,前端和后端是并行开发的,前端往往刚开始不能拿到测试的数据,都需要自己写测试数据。 编写测试数据还是比较浪费时间的,虽然简单,但是都是体力活。

那么是否有工具可以帮我们生成数据,生成API接口,让前端能够爽爽的开发。

Mock.js 正是这样一款类库,可以帮我们模拟生成一堆数据。

二、使用

2.1 前端使用

引入引入mock.js的包,然后生成数据。

<pre>
</pre>
<!-- (必选)加载 Mock -->
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<!-- (必选)加载 Mock -->
<script src="http://mockjs.com/dist/mock.js"></script>
<script>
// 使用 Mock
var data = Mock.mock({
    'list|1-10': [{
        'id|+1': 1
    }]
});
$('<pre>').text(JSON.stringify(data, null, 4))
.appendTo('body')
</script>

生成的数据(数据的个数,1-10个中随机个数)

{
"list": [
    {
        "id": 1
    },
    {
        "id": 2
    },
    {
        "id": 3
    }
    ]
}

2.2 Jquery中,模拟API接口

配置模拟数据

Mock.mock('http://g.cn', 'GET' , {
    'name'     : '@name',
    'age|1-100': 100,
    'color'    : '@color'
});

发送Ajax请求:

$.ajax({
    url: 'http://g.cn',
    dataType:'json'
    }).done(function(data, status, xhr){
    console.log(
    JSON.stringify(data, null, 4)
    )    
});

返回数据:

// 结果1
{
"name": "Elizabeth Hall",
"age": 91,
"color": "#0e64ea"
}

// 结果2
{
"name": "Michael Taylor",
"age": 61,
"color": "#081086"
}

2.3 Node.js 中使用

// 安装
npm install mockjs

// 使用
var Mock = require('mockjs');
var data = Mock.mock({
    'list|1-10': [{
        'id|+1': 1
    }]
});

console.log(JSON.stringify(data, null, 4))

三、Mock.js语法

  • 数据模板定义(Data Temaplte Definition,DTD)
  • 数据占位符定义(Data Placeholder Definition,DPD)

3.1 模板定义

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

注意:

属性名 和 生成规则 之间用 | 分隔。生成规则 是可选的。生成规则 有 7 种格式:

 'name|min-max': value    //随机取min-max之间的值
 '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    //自增的值

生成规则 的 含义 需要依赖 属性值 才能确定。
属性值 中可以含有 @占位符。
属性值 还指定了最终值的初始值和类型。

3.2 占位符

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
//使用方式
Mock.mock('http://g.cn', 'GET' , {
    'name'     : '@name',
    'age|1-100': '@ctitle',
    'color'    : '@color'
});

四、Mock.js 模拟Ajax请求响应时间

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

五、参考地址

  1. 《使用Mock.js进行独立于后端的前端开发》
  2. 《Mock.js》
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,765评论 25 709
  • 午后流云飞,晴空两相随。 烈日渐西垂,暮至红霞追。 弦月未满杯,早起与争辉。 不及骄阳媚,自有清风陪。 蟾宫露华坠...
    星尘梦羽阅读 521评论 0 8
  • 偕芳草,被清风,目涵空。一瞬流光冬已远,再邀同。 今世但循张敞,来生不慕韩冯。两蕊渚莲春作主,并头丛。
    肇英阅读 382评论 1 1
  • 心也江湖阅读 126评论 0 0