mock.js模拟数据实现前后端分离


Posted in Javascript onJuly 24, 2019

众所周知,在日常开发中,前后端分离是最常见的开发模式,前端完成页面渲染,后端提供接口数据。

但是起初项目刚开始,后端还没有写好接口数据,前端要构建页面,还得考虑结构以及后期真实数据的问题。

所以前后端统一接口数据和格式是必要的。

而当统一好接口数据和格式后,前端就可以通过mock.js来模拟对应格式的数据,以此来完成页面的搭建,当后端完成接口和数据后,因为前期数据格式都是规范好的,所以只要去除掉mock.js那部分即可,而不需要再更改界面。

那么说了这么多,mock.js到底是什么?

根据官网简单的解释来说,就是:拦截ajax请求,模拟返回自定义格式的数据,实现前后端分离。

说的这么厉害,那么我们来看看具体用法。

这次先看看在原生中怎么使用,下次介绍在vue中的使用。

普通不涉及框架的项目中安装mock.js推荐使用bower安装:

npm install bower -g
bower install mockjs --save

具体使用:

<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>mock js-demo1</title>
</head>
 
<body>
 
</body>
 
</html>
<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>
<script src="js/ajax.js"></script>
<script type="text/javascript" src="./bower_components/mockjs/dist/mock.js"></script>
<script>
  Mock.mock('http://api.com', {
    'users|5': [ {
      'name': '@cname', //中文名称
      'age|1-100': 100, //100以内随机整数
      'birthday': '@date("yyyy-MM-dd")', //日期
      'city': '@city(true)' //中国城市
    }]
  });
  // //JQuery方式
  $.ajax({
    url: 'http://api.com',
    dataType: 'json'
  }).done(function (data, status, xhr) {
    console.log(
      JSON.stringify(data, null, 4)
    )
  });
  //原生ajax方式
  function ajax(method, url, params, isAsync) {
    //创建对象
    xhr = new XMLHttpRequest();
    //设置请求参数
    xhr.open(method, url, isAsync);
    //回调函数
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4 && xhr.status == 200) {
        console.log(xhr.responseText);
      }
    }
    //发送请求
    xhr.send();
  }
  ajax('get','http://api.com','', true);
</script>

这里我引入了通过bower下载的mock.js,然后给mockjs给定一个请求地址(如果有可以给定真实地址,没有可以写个假地址,只要和ajax请求地址一致即可),然后在mock的第二个参数中定义了数据格式,是个随机五位的数组对象,包括姓名、年龄、生日、地址

然后通过ajax正常请求地址,然后返回值就会收到mock.js的拦截,而返回我们自定义格式的数据,而不是后端数据

这样在项目初期,后端没有数据的情况下,我们就可以通过模拟数据完成页面功能的开发。

当后端数据完成后,我们只要删除mock.js部分即可(如果前期接口地址是假的,改一下接口地址即可)

这里推荐把mock.js部分抽离到公共的文件中,引入即可,这样后期可维护性强,只要不引入mock部分即可,而不用来回删代码。

返回数据效果:

mock.js模拟数据实现前后端分离

具体的请求格式官网写的很清楚,这里就不做赘述了。

附上官网的地址:

mock.js官网

好了,这次就介绍到这里,大家去试试吧。

如有问题,请指出,接受批评。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
更正确的asp冒泡排序
May 24 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
Apr 07 Javascript
javascript document.referrer 用法
Apr 30 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
Feb 05 Javascript
通过遮罩层实现浮层DIV登录的js代码
Feb 07 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
Aug 27 Javascript
Javascript基础回顾之(二) js作用域
Jan 31 Javascript
Vue学习笔记进阶篇之单元素过度
Jul 19 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
Jan 16 Javascript
js中如何完美的解析数据
Mar 18 Javascript
使用Canvas绘制一个游戏人物属性图
Mar 25 Javascript
vue+mock.js实现前后端分离
Jul 24 #Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
Jul 24 #Javascript
Vue封装的组件全局注册并引用
Jul 24 #Javascript
vue子路由跳转实现tab选项卡
Jul 24 #Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 #Javascript
Vue.js路由实现选项卡简单实例
Jul 24 #Javascript
vue滚动tab跟随切换效果
Jun 29 #Javascript
You might like
php设置页面超时时间解决方法
2015/09/22 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
浅谈python之新式类
2018/08/12 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
求网格中的黑点分布
2013/11/06 面试题
静态成员和非静态成员的区别
2012/05/12 面试题
应届生骨科医生求职信
2013/10/31 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
就业协议书怎么填
2014/09/15 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
家长学校教学计划
2015/01/19 职场文书
销售开票员岗位职责
2015/04/15 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书