Easy Mock以及Vue+Mock.js

  • 数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:'name|rule': value

    语法规则 说明
    'name|min-max': string 通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max
    'name|count': string 通过重复 string 生成一个字符串,重复次数等于 count
    'name|min-max': number 生成一个大于等于 min、小于等于 max 的整数,属性值 number 用来确定类型
    'name|+1': number 初始值为 number,以后每次请求在前面的基础上+1
    'name|min-max.dmin-dmax': number 生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位
    'name|1': boolean 随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2
    'name|count': object 从属性值 object 中随机选取 count 个属性
    'name|min-max': object 从属性值 object 中随机选取 min 到 max 个属性
    'name|1': array 从属性值 array 中随机选取 1 个元素,作为最终值
    'name|+1': array 从属性值 array 中按照顺序选取 1 个元素,作为最终值
    'name|count': array 通过重复属性值 array 生成一个新数组,重复次数为 count
    'name|min-max': array 通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max

    简单举例:

    1. var arr=['aa','bb','cc'];
    2. var obj={
    3. 'name':'MountainC44',
    4. 'old':'23',
    5. 'sex':'man'
    6. };
    7. //数据模版简单举例
    8. {
    9. 'firstName|3':'xue',//重复fei这个字符串 3 次。
    10. 'lastName|2-5':'yangbo',//重复yangbo这个字符串 2-5 次。
    11. 'index|+1':0, //属性值自动加 1,初始值为 0
    12. 'age|20-30':25,//生成一个大于等于 20、小于等于 30 的整数,属性值 25 只是用来确定类型
    13. 'weight|100-120.2-5':110.24,//生成一个浮点数,整数部分大于等于 100、小于等于 120,小数部分保留 2 到 5 位。
    14. 'likeMovie|1':Boolean,//随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。
    15. 'friend1|1':arr,//从数组 arr 中随机选取 1 个元素,作为最终值。
    16. 'friend2|+1':arr,//从属性值 arr 中顺序选取 1 个元素,作为最终值
    17. 'friend3|2-3':arr,//通过重复属性值 arr 生成一个新数组,重复次数大于等于 2,小于等于 3。
    18. 'obj1|2':obj,//从属性值 obj 中随机选取 2 个属性
    19. 'obj2|1-2':obj,//从属性值 obj 中随机选取 1 到 2 个属性。
    20. 'regexp1':/^[a-z][A-Z][0-9]$/,//生成的符合正则表达式的字符串
    21. }
    22. //返回示例
    23. {
    24. 'firstName':'xuexuexue',
    25. 'lastName':'yangboyangbo',
    26. 'index':0,
    27. 'age':28,
    28. 'weight':115.223,
    29. 'likeMovie':Boolean,
    30. 'friend1':'bb',
    31. 'friend2':'aa',
    32. 'friend3|2-3':['aa','bb','cc','aa','bb','cc'],
    33. 'obj1':{'name':'MountainC44','old':'23',},
    34. 'obj2':{'name':'MountainC44',},
    35. 'regexp1':'sC2',
    36. }
    1. //数据占位符使用
    2. {
    3. "string|1-2": "@string", //随机生成字符串
    4. "integer": "@integer(10, 30)", //随机生成一个10~30之间的正整数
    5. "float": "@float(60, 100, 2, 2)", //随机生成浮点数,参数分别为整数部分最小值和最大值、小数部分保留最小位数和最大位数
    6. "boolean": "@boolean", //随机生成boolean
    7. "date": "@date(yyyy-MM-dd)", //按照格式随机生成时间
    8. "datetime": "@datetime", //随机生成时间
    9. "now": "@now", //当前时间
    10. "url": "@url", //随机生成url字符串
    11. "email": "@email", //随机生成邮箱
    12. "region": "@region", //随机生成地区
    13. "city": "@city", //随机生成城市
    14. "province": "@province", //随机生成省会
    15. "county": "@county", //随机生成一个(中国)县
    16. "upper": "@upper(@title)", //把生随机成的标题全部转为大写
    17. "guid": "@guid", //随机生成一个 GUID
    18. "id": "@id", //随机生成一个 18 位身份证
    19. "image": "@image(200x200)", //随机生成一个大小为200x200的图片链接
    20. "title": "@title", //随机生成一句标题,其中每个单词的首字母大写
    21. "cparagraph": "@cparagraph", //随机生成一段中文文本
    22. "csentence": "@csentence", //随机生成一段中文文本
    23. "range": "@range(2, 10)" //返回一个内容从2开始到9的整型数组
    24. }
    25. //返回示例
    26. {
    27. "string": "A0L^Z",
    28. "integer": 16,
    29. "float": 82.23,
    30. "boolean": true,
    31. "date": "1994-09-16",
    32. "datetime": "1994-10-22 02:30:32",
    33. "now": "2018-10-21 10:31:00",
    34. "url": "mailto://tfoyemmcy.as/ppm",
    35. "email": "f.lqdfggdy@wulqhmm.com",
    36. "region": "华南",
    37. "city": "茂名市",
    38. "province": "澳门特别行政区",
    39. "county": "和平区",
    40. "upper": "LGHV FJV FDHNA ZJQO MKQEPMY BYVPYMU JRUPL",
    41. "guid": "EdAD386E-eCB3-e054-fBd3-D4BCd58bF2Dd",
    42. "id": "630000201810081550",
    43. "image": "http://dummyimage.com/200x200",
    44. "title": "Powol Qhycsib Nvwf Bmiuvcek Ioisiu Sxdmrpdip",
    45. "cparagraph": "又平你大万被然红义她之影此属且。定圆光半条社已上实参规持备特战划。打第一在感革会属利小年往。认七单边济火国风风速次支比容争连劳。目叫织新百却又处思只名发这实。什济安这自空东认十需打现军应。",
    46. "csentence": "火事必该验导回声市然第别程确条状。",
    47. "range": [2,3,4,5,6,7,8,9]
    48. }
    • Mock.mock( rurl?, rtype?, template|function( options ) ) :根据数据模板生成模拟数据,拦截指定rtype类型的url为rurl的ajax请求,返回数据模板中的模拟数据或执行回掉方法
    • Mock.setup( settings ):配置拦截 Ajax 请求时的行为。支持的配置项有:timeout,指拦截的 Ajax 请求的响应时间,单位是毫秒
    • Mock.Random.xxx():Mock.Random对象提供的方法在数据模板中称为占位符,书写格式为 @占位符(参数 [, 参数])
    • Mock.valid( template, data ):校验真实数据 data 是否与数据模板 template 匹配
    • Mock.toJSONSchema( template ):把 Mock.js 风格的数据模板 template 转换成 JSON Schema

Easy Mock 引入了Mock.js,所以支持Mock.js语法规范

Easy Mock以及Vue+Mock.js

  • Easy Mock以及Vue+Mock.js

  • Easy Mock以及Vue+Mock.js

    Easy Mock以及Vue+Mock.js

  • Easy Mock以及Vue+Mock.js

    Easy Mock以及Vue+Mock.js

  • Easy Mock以及Vue+Mock.js

    1. //mock.js文件
    2. const Mock = require('mockjs');
    3. const data = Mock.mock({
    4. // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
    5. 'foods|10-50': [{
    6. name: '@ctitle(2,10)',
    7. img: "@image('600x600',#b7ef7c)",
    8. brief: '@csentence(1,50)',
    9. 'price|0-20.0-2': 1,
    10. num: 0,
    11. minusFlag: true,
    12. time: '@time',
    13. 'peisongfei|0-100.0-2': 1,
    14. 'limit|0-50': 1,
    15. }],
    16. 'sales|10-50': [{
    17. // 属性 id 是一个自增数,起始值为 1,每次增 1
    18. name: '@ctitle(2,10)',
    19. img: "@image('600x600',#b7ef7c)",
    20. brief: '@csentence(1,50)',
    21. 'price|0-100.0-2': 1,
    22. num: 0,
    23. minusFlag: true,
    24. time: '@time',
    25. 'peisongfei|0-100.0-2': 1,
    26. 'limit|0-100': 1,
    27. }],
    28. });
    29. Mock.mock('/api/data', data); //对url为/api/data的ajax请求进行拦截返回data假数据
    30. Mock.mock('/api/data1', () => ({
    31. data,
    32. }));
    33. //main.js文件 引入mock.js
    34. require('./mock.js');
    35. //vue组件使用axios发送ajax请求
    36. created() {
    37. this.$axios.get('/api/data1').then((res) => {
    38. console.log(res.data);
    39. });
    40. this.$axios.get('/api/data').then((res) => {
    41. console.log(res.data);
    42. });
    43. }
  • Easy Mock以及Vue+Mock.js

版权声明:本文为mountainc44原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mountainc44/p/9826735.html