vue+mock.js实现前后端分离


Posted in Javascript onJuly 24, 2019

之前都是介绍在普通项目中使用mock.js,那么本次就来介绍一下在vue中使用mock.js实现前后端分离。

安装:

npm install mockjs

这里先写个小案例介绍一下具体使用,写法不规范,仅供参考。

然后案例讲完后我们讲具体的规范使用

那么一起来看看这个案例吧:

<script>
 import Mock from "mockjs"
 export default {
  name: "FunctionsDbSource",
  methods:{
   // 接口测试
   init(){
    // 请求后端数据,查询数据源
    this.axios({
     method: "get",
     url:`${this.baseURL}/GetAll`,
     headers: {
      Account: "Admin",
      Password:"888888"
     }
    })
    .then((response)=> {
     console.log(response);
    })
    .catch((error)=> {
     console.log(error);
    });
   }
  },
  created(){
   Mock.mock(`${this.baseURL}/GetAll`, {
    'users|5': [ {
     'name': '@cname', //中文名称
     'age|1-100': 100, //100以内随机整数
     'birthday': '@date("yyyy-MM-dd")', //日期
     'city': '@city(true)' //中国城市
    }]
   });
   this.init();
  }
 }
</script>

首先引入了mock.js,然后定义了一个方法,用axios请求后台数据,在创建后调用此方法,然后我在创建后使用mock.js拦截请求,模拟数据(这里我模拟的是一个5位长度的users数组),只要mock的url地址和请求的地址相同,就会自动拦截请求。

我们打印了一下请求的结果response:

vue+mock.js实现前后端分离

大家可以看到,和后端返回的数据格式一致,只是里面内容是我们自己模拟的,所以,只要提前和后端商量好数据格式,我们自己进行模拟数据,完成界面得渲染,等到后端写好数据接口,到时候只要把mock部分删除,就是我们自己想要的结果了。

但是每个请求都这样在vue页面中去写mock,后期删除起来也不方便,可维护性低,高耦合,所以我们这里就涉及到规范的写法。

1、安装:

npm install mockjs

2、手动新建mock.js文件(当然新建文件夹把它抽离出来也是可以的)

内容如下(根据实际需求更改):

import Mock from 'mockjs' // 引入mockjs
 
let data = 'users|5': [ {
   'name': '@cname', //中文名称
   'age|1-100': 100, //100以内随机整数
   'birthday': '@date("yyyy-MM-dd")', //日期
   'city': '@city(true)' //中国城市
  }]
 
Mock.mock('/data/index', 'get', data) // 根据数据模板生成模拟数据

3、main.js中引入(注意自己js文件的路径)

// 引入mock
require('./mock.js');

4、页面中使用:

<script>
 import Mock from "mockjs"
 export default {
  name: "FunctionsDbSource",
  methods:{
   // 接口测试
   init(){
    // 请求后端数据,查询数据源
    this.axios({
     method: "get",
     url:"data/index",
    })
    .then((response)=> {
     console.log(response);
    })
    .catch((error)=> {
     console.log(error);
    });
   }
  },
  created(){
   this.init();
  }
 }
</script>

以此我们就完成了抽离mock.js,之后只要往mock的js文件中添加请求即可,后续只要等后端接口写好,把main.js中的引入mock.js注释(删除)即可。

还有一种更直接的方法,因为mock只是我们生产环境需要的东西,当我们发布上线肯定不需要这部分请求,都会换成实际请求地址和数据,所以直接把mock.js配置到生产环境,上线部署打包不打包这部分即可,就和vue中的代理部分,上线是不会打包这部分的一样。

感兴趣的童鞋可以自己去研究研究哈。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery下操作HTML控件的实现代码
Jan 12 Javascript
为原生js Array增加each方法
Apr 07 Javascript
JS保存和删除cookie操作 判断cookie是否存在
Nov 13 Javascript
深入解析JavaScript中的变量作用域
Dec 06 Javascript
简介BootStrap model弹出框的使用
Apr 27 Javascript
jQuery Ajax 加载数据时异步显示加载动画
Aug 01 Javascript
漂亮! js实现颜色渐变效果
Aug 12 Javascript
vue.js声明式渲染和条件与循环基础知识
Jul 31 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
May 31 Javascript
JavaScript Event Loop相关原理解析
Jun 10 Javascript
vue-cli4项目开启eslint保存时自动格式问题
Jul 13 Javascript
原生js实现表格循环滚动
Nov 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
Vue.js实现tab切换效果
Jul 24 #Javascript
You might like
PHP的面试题集
2006/11/19 PHP
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
php 多文件上传的实现实例
2016/10/23 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
flexigrid 参数说明
2010/11/23 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
Python编程中的文件操作攻略
2015/10/16 Python
Python数据类型详解(一)字符串
2016/05/08 Python
《Python学习手册》学习总结
2018/01/17 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
python修改文件内容的3种方法详解
2019/11/15 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
学校经典推荐信
2013/10/30 职场文书
大学同学聚会邀请函
2014/01/29 职场文书
知识竞赛活动方案
2014/02/18 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL
bose降噪耳机音能消除人声吗
2022/04/19 数码科技
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS