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 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
探索Emberjs制作一个简单的Todo应用
Nov 07 Javascript
javascript禁止超链接跳转的方法
Feb 02 Javascript
基于JQuery实现图片轮播效果(焦点图)
Feb 02 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
ionic环境配置及问题详解
Jun 27 Javascript
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
Sep 30 Javascript
微信小程序实现的绘制table表格功能示例
Apr 26 Javascript
vue 防止页面加载时看到花括号的解决操作
Nov 09 Javascript
js实现类选择器和name属性选择器的示例步骤
Feb 07 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制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
jQuery操作css样式
2017/05/15 jQuery
JS图片预加载插件详解
2017/06/21 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
Python 爬虫的工具列表大全
2016/01/31 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
python web基础之加载静态文件实例
2018/03/20 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
HTML5进度条特效
2014/12/18 HTML / CSS
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
应届生.NET方向面试题
2015/05/23 面试题
2014年办公室文员工作总结
2014/11/12 职场文书