前言

使用mockjs可以事先模拟数据,前提是和后端约定好了数据接口,怎样的数据。使用mock就可以生成你要的数据了,从而实现开发时前后端分离。

其主要功能是:

  • 基于数据模板生成模拟数据。
  • 基于HTML模板生成模拟数据。
  • 拦截并模拟 ajax 请求。

语法规范

Mock.js 的语法规范包括两部分:

  1. 数据模板定义规范(Data Template Definition,DTD)
  2. 数据占位符定义规范(Data Placeholder Definition,DPD)

数据模板定义规范 DTD

数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:

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

注意:

  • 属性名生成规则 之间用竖线 | 分隔。
  • 生成规则 是可选的。
  • 生成规则 有 7 种格式:
    1. 'name|min-max': value
    2. 'name|count': value
    3. 'name|min-max.dmin-dmax': value
    4. 'name|min-max.dcount': value
    5. 'name|count.dmin-dmax': value
    6. 'name|count.dcount': value
    7. 'name|+step': value
  • 生成规则 的 含义 需要依赖 属性值的类型 才能确定。
  • 属性值 中可以含有 @占位符
  • 属性值 还指定了最终值的初始值和类型。

例1:

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 }

例2:根据正则表达式 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" }

例3:

//string表示属性名
//3表示后面属性值重复次数
 Mock.mock({"string|3": "★" })

结果:

//星星数量为3
{"string": "★★★"
}

例4:

// num为属性名
// 生成一个大于等于1,小于等于100 的整数,属性值100只是用来确定类型
Mock.mock({"num|1-100": 100 })

结果:

{"number": 8
}

数据占位符定义规范 DPD

占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。

占位符 的格式为:

@占位符
@占位符(参数 [, 参数])

注意:

  1. @ 来标识其后的字符串是 占位符
  2. 占位符 引用的是 Mock.Random 中的方法。
  3. 通过 Mock.Random.extend() 来扩展自定义占位符。
  4. 占位符 也可以引用 数据模板 中的属性。
  5. 占位符 会优先引用 数据模板 中的属性。
  6. 占位符 支持 相对路径绝对路径
Mock.mock({name: {first: '@FIRST',middle: '@FIRST',last: '@LAST',full: '@first @middle @last'}
})
// => { "name": { "first": "Charles", "middle": "Brenda", "last": "Lopez", "full": "Charles Brenda Lopez" } }

通过jQuery ajax请求假数据例子

1.首先,引入mockjs,引入jquery(此处用jq封装好的ajax发送请求)

<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script><script src="http://mockjs.com/dist/mock.js"></script>

2.使用mock生成数据模板

//这里的第一个参数http://api.cn 就是下面ajax请求的url,mock对该url进行拦截'
//这里的第二个参数就是template数据模板,mock会返回模板生成的数据Mock.mock('http://api.cn', {'name': '@name', 'age|1-100': 100, 'city': '@city' });

3.ajax发送请求与结果

$.ajax({url: 'http://api.cn',dataType: 'json'
}).done(function(data, status, xhr) {console.log( JSON.stringify(data)); //{"name":"Mark Lee","age":4,"city":"辽阳市"} });

vuecli中使用mockjs

首先安装

npm install mockjs

我的项目src下的结构如下:

我在scripts中新建了一个mockdata.js

里面的内容如下:

import Mock from 'mockjs';
const data = Mock.mock({// 属性 list 的值是一个数组,其中含有 1 到 10 个元素'foods|10-50': [{'name': "@ctitle(2,10)", "img": "@image('600x600',#b7ef7c)", "brief": "@csentence(1,50)", "price|0-20.0-2": 1, "num": 0, "minusFlag": true, "time": "@time", "peisongfei|0-100.0-2": 1, "limit|0-50": 1 }], "sales|10-50": [{ // 属性 id 是一个自增数,起始值为 1,每次增 1 'name': "@ctitle(2,10)", "img": "@image('600x600',#b7ef7c)", "brief": "@csentence(1,50)", "price|0-100.0-2": 1, "num": 0, "minusFlag": true, "time": "@time", "peisongfei|0-100.0-2": 1, "limit|0-100": 1 }] }); export default { data }

接下来,在需要用到的mock数据的vue组件页面中,这样写

import mockdata from "@/scripts/mockdata.js";

引用数据,在你methods里面 直接引用刚刚的mockdata即可。例如:

new Promise((resolve, reject) => {that.foods =mockdata.data.foods;  //直接点出你生成的假数据对象即可that.foodsListLen = that.foods.length;}).catch(err=>{ console.log(err) })

参考

官网地址:https://github.com/nuysoft/Mock/wiki

vue+vuecli+webpack中使用mockjs模拟后端数据相关推荐

  1. 在Vue的webpack中结合runder函数

    在Vue的webpack中结合runder函数 1.引入: <h1>下面是vue的内容:</h1><div id="app"><login ...

  2. 前端使用mockjs模拟接口数据

    在前后端分离开发中,有时候后台开发比较慢还没有给回接口给前端,那么这时我们可以自己模拟数据(也就是mock数据). 当然可能你会想到我新建个js文件,把数据模拟好导出再引入请求就可以啦.这个方法虽然可 ...

  3. mock模拟的数据能增删改查吗_如何在Vue中使用Mockjs模拟数据的增删查改

    之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...

  4. vue外卖十四:商家详情:用mockjs模拟api数据接口

    1)安装mockjs 官网:mockjs.com 文档:https://github.com/nuysoft/Mock/wiki/Getting-Started http://mockjs.com/e ...

  5. vue -- vue-cli webpack项目打包后自动压缩成zip文件

    用vue2.0开发项目,使用npm run build 命令 ,但是只会生成dist文件夹,以下是生成zip压缩包方法 1,插件安装 webpack插件安装 filemanager-webpack-p ...

  6. 基于Vue+Vue-cli+webpack搭建渐进式高可维护性前端实战项目

    本文是专栏<Vue + SpringBoot前后端分离项目实战>的实战第一篇,将从Vue脚手架安装开始,逐步带你搭建起一套管理系统所需的架构.当然,在默认安装完成之后,会对文件目录进行初步 ...

  7. Matlab基础编程知识处理(2)(数学建模中模型的模拟与数据提取,本篇全干货)

    今天我终于没有再当鸽子了. 如何提取运算中的数值信息 这里主要是介绍矩阵存储数据的思想. 先假设一个情形: 我在分析模拟电网波动时,想了解究竟有多少次电频率超过我设置的舒适值,那么我该如何统计超过的次 ...

  8. MVC框架中的前端与后端数据传递及实例

    一.MVC框架 MVC代表Model.View.Controller,即模型.视图.控制器.其中: View(视图):就是人机交互界面,可以给用户显示业务逻辑数据,同时也可以 接收用户输入的数据. M ...

  9. vue 项目 前端 模拟后端接口数据(vue2,vue3)

    项目中或者平常自己创建demo的过程中,往往需要后端配合,但是有时候没有后端,又需要数据,此时就展示了我们前端的强大之处,自己模拟后端接口数据. 如果自定义一个模拟后端数据, 首先创建一个文件夹放置后 ...

最新文章

  1. 前端日报-20160527-underscore 源码解读
  2. virtualbox 采用 NAT 还是 BRIDGE
  3. 【Qt】解决GDAL直接读取数据到QImage导致图像歪斜的问题
  4. 大数据高地,这样炼成!
  5. 如何使用Syncios Data Recovery直接从 iOS 设备恢复数据?
  6. java 方法(函数)详解
  7. SQL常见面试题总结
  8. 【CSS】关键字 -webkit-fill-available 详解
  9. python Beautiful Soup解析html页面table标签
  10. 数据库用户配额问题ORA-01536: space quota exceeded for tablespace 'TFR_DATA' #
  11. 适用于程序员的钢琴、五线谱入门教程
  12. Django搭建在线教育平台(一)
  13. HTML实现怀旧小游戏,超级玛丽、飞机大战…等十余款【完整源码分享】
  14. 一切都好,只是很想念
  15. VIO--后端优化实践(坑)
  16. 7款免费发短信软件,看看哪一款适合你
  17. 基础通用版IPv6转换服务使用说明及设置示例
  18. ORACLE ERP 系统架构与应用实践
  19. D-OJ刷题日记:找数组中的最大值 题目编号:702
  20. android+学籍管理,论文基于android的学籍管理系统的设计与实现.doc

热门文章

  1. 在私有云上创建虚拟机
  2. Python:绘制动态地图-pyecharts
  3. (七)通过pygame来设置飞机大战中 敌机 的速度、位置等
  4. 交换机tftp服务器修改ip,二、利用TFTP服务器恢复交换机配置.ppt
  5. python画好看的图案-妈耶,python的散点图竟然能画这么好看!
  6. vscode开发小程序需要安装的插件集合
  7. 掉线(自创--根据刘德华《今天》歌词改编)
  8. java基于微信小程序校园二手闲置商品交易跳蚤市场 uniapp 小程序
  9. HTTPS学习笔记:(3)一文彻底了解PKI与证书
  10. python读取excel画出饼状图_python操作Excel、openpyxl 之图表,折线图、饼图、柱状图等...