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 相关文章推荐
JS中引用百度地图并将百度地图的logo和信息去掉
Sep 29 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
javascript高级编程之函数表达式 递归和闭包函数
Nov 29 Javascript
AngularJS折叠菜单实现方法示例
May 18 Javascript
详解如何使用webpack打包Vue工程
May 27 Javascript
基于JavaScript 性能优化技巧心得(分享)
Dec 11 Javascript
ng-alain表单使用方式详解
Jul 10 Javascript
关于vue编译版本引入的问题的解决
Sep 17 Javascript
vue观察模式浅析
Sep 25 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 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实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
json 定义
2008/06/10 Javascript
chrome调试javascript详解
2015/10/21 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
[02:33]2018 DOTA2亚洲邀请赛回顾视频 再次拾起那些美妙的时刻
2018/04/10 DOTA
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
python实现对变位词的判断方法
2020/04/05 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
python 实用工具状态机transitions
2020/11/21 Python
python如何实现递归转非递归
2021/02/25 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
毕业论文致谢信
2015/05/14 职场文书
党性修养心得体会2016
2016/01/21 职场文书
详解Redis主从复制实践
2021/05/19 Redis
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android
以下牛机,你有几个
2022/04/05 无线电
Python如何用re模块实现简易tokenizer
2022/05/02 Python