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 相关文章推荐
JS代码格式化和语法着色V2
Oct 14 Javascript
Javascript 实用小技巧
Apr 07 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
Jun 05 Javascript
javaScript中Math()函数注意事项
Jun 18 Javascript
JavaScript 中 avalon绑定属性总结
Oct 19 Javascript
AngularJS入门教程之模块化操作用法示例
Nov 02 Javascript
快速入门Vue
Dec 19 Javascript
javaScript动态添加Li元素的实例
Feb 24 Javascript
详解Vue.js项目API、Router配置拆分实践
Mar 16 Javascript
JavaScript中import用法总结
Jan 20 Javascript
教你一步步实现一个简易promise
Nov 02 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
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
nodeJS微信分享
2017/12/20 NodeJs
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
vue中的inject学习教程
2019/04/24 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
某公司C#程序员面试题笔试题
2014/05/26 面试题
施工人员岗位职责
2013/12/12 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
公司开会通知
2015/04/20 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫