Vue+Mock.js模拟登录和表格的增删改查功能


Posted in Javascript onJuly 26, 2018

前言

关于mockjs,官网描述的是

1.前后端分离

2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。

3.数据类型丰富

4.通过随机数据,模拟各种场景。

5 项目不背锅(等后端给接口的话可能会背锅)

等等优点,最后一条我加的。

第一步先安装mock.js

npm install mockjs --save-dev

第二步使用 mock.js

import Mock from 'mockjs'

哪里用就在哪里引入。我是在项目src/mock/index.js里面使用mock.js

详细请看官方文档

关键点1:Mock.mock()

Mock.mock( rurl?, rtype?, template|function( options ) )

这里的参数都是可选:

  • rurl(可选)。
  • 表示需要拦截的 URL,可以是 URL 字符串或 URL 正则。例如 //domain/list.json/、'/domian/list.json'。
  • rtype(可选)。
  • 表示需要拦截的 Ajax 请求类型。例如 GET、POST、PUT、DELETE 等。
  • template(可选)。
  • 表示数据模板,可以是对象或字符串。例如 { 'data|1-10':[{}] }、'@EMAIL'。
  • function(options)(可选)。
  • 表示用于生成响应数据的函数。
  • options:指向本次请求的 Ajax 选项集。

关键点2:模板生成语法:

数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:

// 属性名 name
// 生成规则 rule
// 属性值 value
'name|rule': value
属性名 和 生成规则 之间用竖线 | 分隔。
生成规则 是可选的。
生成规则 有 7 种格式:
'name|min-max': value
'name|count': value
'name|min-max.dmin-dmax': value
'name|min-max.dcount': value
'name|count.dmin-dmax': value
'name|count.dcount': value
'name|+step': value`

生成规则 的 含义 需要依赖 属性值的类型 才能确定。

属性值 中可以含有 @占位符。

属性值 还指定了最终值的初始值和类型。

举个栗子:

栗子1:

//string表示属性名
//3表示后面属性值重复次数
 Mock.mock({
 "string|3": "★"
})

结果:

//星星数量为3
{
  "string": "★★★"
}

栗子2:

// num为属性名
// 生成一个大于等于1,小于等于100 的整数,属性值100只是用来确定类型
Mock.mock({
 "num|1-100": 100
})

结果

{
  "number": 8
}

其他设置

// 设置全局延时 没有延时的话有时候会检测不到数据变化 建议保留
Mock.setup({
 timeout: '300-600'
})

模拟登录

// 模拟登录user/login接口,对应的函数是loginByUsername
Mock.mock(/\/user\/login/, 'post', loginByUsername)

当调用登录接口user/loign时候会自动对应到loginByUsername这个函数执行这个函数,

这个函数会返回是否登录成功数据。返回成功的数据,就是登录成功了,否则相反。

mock模拟登录ok

接下来介绍模拟表格增删改查。

其实也是差不多的

// 用户相关
Mock.mock(/\/user\/listpage/, 'get', getUserList) //模拟分页查询用户信息接口
Mock.mock(/\/user\/remove/, 'get', deleteUser)  //模拟删除用户信息接口
Mock.mock(/\/user\/add/, 'get', createUser)   //模拟添加用户信息接口
Mock.mock(/\/user\/edit/, 'get', updateUser)  //模拟编辑用户信息接口

就是返回条件查询后的集合假数据而已,假数据是mock.js模拟的。

先循环添加60个假用户

let List = []
const count = 60
for (let i = 0; i < count; i++) {
 List.push(Mock.mock({
  id: Mock.Random.guid(),
  name: Mock.Random.cname(),
  addr: Mock.mock('@county(true)'),
  'age|18-60': 1,
  birth: Mock.Random.date(),
  sex: Mock.Random.integer(0, 1)
 }))
}

我们再来看getUserList这个函数,就是返回分页条件查询的假数据。

getUserList: config => {
  const { name, page = 1, limit = 20 } = param2Obj(config.url)
  const mockList = List.filter(user => {
   if (name && user.name.indexOf(name) === -1) return false
   return true
  })
  const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1))
  return {
   code: 0,
   data: {
    total: mockList.length,
    users: pageList
   }
  }
 }

关于增加,删除和修改都只需要返回一个数据message="操作成功"即可。

第三步在main.js里面引入刚刚我们写好的src/mock/index.js

import './mock' // simulation data 路径index.js可省略

至此整合完毕 源码地址

总结

以上所述是小编给大家介绍的Vue+Mock.js模拟登录和表格的增删改查功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 面向对象编程(1) 基础
May 18 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
Dec 21 Javascript
javascript 树形导航菜单实例代码
Aug 13 Javascript
js简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
JavaScript中的对象序列化介绍
Dec 30 Javascript
基于JavaScript实现动态添加删除表格的行
Feb 01 Javascript
微信小程序实现表单校验功能
Mar 30 Javascript
vue在使用ECharts时的异步更新和数据加载详解
Nov 22 Javascript
微信小程序实现漂亮的弹窗效果
May 26 Javascript
详解在create-react-app使用less与antd按需加载
Dec 06 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
Dec 01 Javascript
AJAX学习笔记
May 18 Javascript
Vue头像处理方案小结
Jul 26 #Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
Jul 26 #Javascript
vue router 配置路由的方法
Jul 26 #Javascript
vue+webpack模拟后台数据的示例代码
Jul 26 #Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 #Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 #Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 #Javascript
You might like
php学习之数据类型之间的转换介绍
2011/06/09 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
js变量提升深入理解
2016/09/16 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
python中迭代器(iterator)用法实例分析
2015/04/29 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
小学音乐教学反思
2014/02/05 职场文书
公路绿化方案
2014/05/12 职场文书
三好学生评语大全
2014/12/29 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
雷锋的观后感
2015/06/10 职场文书
《刷子李》教学反思
2016/02/20 职场文书
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python
Spring Bean是如何初始化的详解
2022/03/22 Java/Android