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 相关文章推荐
从零开始学习jQuery (二) 万能的选择器
Oct 01 Javascript
JS 面向对象之神奇的prototype
Feb 26 Javascript
基于jQuery的简单九宫格实现代码
Aug 09 Javascript
JavaScript实现QueryString获取GET参数的方法
Jul 02 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
从零开始最小实现react服务器渲染详解
Jan 26 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
Nov 05 Javascript
js实现图片无缝循环轮播
Oct 28 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
JavaScrip如果基于url实现图片下载
Jul 03 Javascript
React更新渲染原理深入分析
Dec 24 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+dbfile开发小型留言本
2006/10/09 PHP
Zend 输出产生XML解析错误
2009/03/03 PHP
PHP扩展开发入门教程
2015/02/26 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
python基础教程之面向对象的一些概念
2014/08/29 Python
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
十岁生日父母答谢词
2014/01/18 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
经营管理策划方案
2014/05/22 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL