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 相关文章推荐
用javascript模仿ie的自动完成类似自动完成功的表单
Dec 12 Javascript
打印json对象的内容及JSON.stringify函数应用
Mar 29 Javascript
javascript常用对话框小集
Sep 13 Javascript
js同源策略详解
May 21 Javascript
javascript实现简单的分页特效
Aug 12 Javascript
jQuery中Find选择器用法示例
Sep 21 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
Sep 07 Javascript
vue使用iframe嵌入网页的示例代码
Jun 09 Javascript
Angularjs之ngModel中的值验证绑定方法
Sep 13 Javascript
Vue.js实现可排序的表格组件功能示例
Feb 19 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
Feb 22 Javascript
vue实现动态表格提交参数动态生成控件的操作
Nov 09 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实现过滤各种HTML标签
2015/05/17 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
Nuxt.js实战和配置详解
2019/08/05 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
基于Python实现的微信好友数据分析
2018/02/26 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Python pip使用超时问题解决方案
2020/08/03 Python
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
铁路工务反思材料
2014/02/07 职场文书
搞笑创意广告语
2014/03/17 职场文书
融资租赁计划书
2014/04/29 职场文书
远程培训的心得体会
2014/09/01 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
外出听课学习心得体会
2016/01/15 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS