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 相关文章推荐
Extjs学习笔记之一 初识Extjs之MessageBox
Jan 07 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
javascript类型系统 Array对象学习笔记
Jan 09 Javascript
动态创建按钮的JavaScript代码
Jan 29 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
微信JSAPI Ticket接口签名详解
Jun 28 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
Aug 10 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
9102年webpack4搭建vue项目的方法步骤
Feb 20 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 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实现分页的一个示例
2006/10/09 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
JavaScript 模拟用户单击事件
2009/12/31 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
vue实现购物车的监听
2020/04/20 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
sqlalchemy对象转dict的示例
2014/04/22 Python
Python中的自定义函数学习笔记
2014/09/23 Python
python列表的增删改查实例代码
2018/01/30 Python
python实现维吉尼亚算法
2019/03/20 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
浅析python标准库中的glob
2020/03/13 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
大四学年自我鉴定
2013/11/13 职场文书
专科应届生求职信
2013/11/24 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
文秘求职信范文
2014/04/10 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
openstack中的rpc远程调用的方法
2021/07/09 Python
PHP遍历数组的6种方式总结
2021/11/17 PHP
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫