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 tab 选项卡
Apr 26 Javascript
纯js实现背景图片切换效果代码
Nov 14 Javascript
jquery中交替点击事件的实现代码
Feb 14 Javascript
详细解读JavaScript编程中的Promise使用
Jul 27 Javascript
纯javascript代码实现计算器功能(三种方法)
Sep 07 Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
Sep 27 Javascript
js实现横向拖拽导航条功能
Feb 17 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
关于layui 下拉列表的change事件详解
Sep 20 Javascript
vue视频播放暂停代码
Nov 08 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
Nov 12 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+MYSQL实现读写分离简单实战
2017/03/13 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
javascript 浏览器检测代码精简版
2010/03/04 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
python列表的增删改查实例代码
2018/01/30 Python
python pygame模块编写飞机大战
2018/11/20 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
Python实现简单猜数字游戏
2021/02/03 Python
python中time tzset()函数实例用法
2021/02/18 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
西雅图的买手店:Totokaelo
2019/10/19 全球购物
好书伴我成长演讲稿
2014/05/14 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
学校师德师风整改方案
2014/10/28 职场文书
介绍信样本
2015/01/31 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
vue如何批量引入组件、注册和使用详解
2021/05/12 Vue.js