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 回车提交表单两种实现方法
Dec 31 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
详解JS正则replace的使用方法
Mar 06 Javascript
最佳的JavaScript错误处理实践
Jul 16 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
es7学习教程之Decorators(修饰器)详解
Jul 21 Javascript
ES6扩展运算符用法实例分析
Oct 31 Javascript
bootstrap 通过加减按钮实现输入框组功能
Nov 15 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
May 10 jQuery
原生js添加一个或多个类名的方法分析
Jul 30 Javascript
vue实现拖拽效果
Dec 23 Javascript
three.js欧拉角和四元数的使用方法
Jul 26 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 中的类
2006/10/09 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
JavaScript延迟加载
2021/03/09 Javascript
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
Python迭代用法实例教程
2014/09/08 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
大学生求职中的自我评价
2013/10/01 职场文书
高职教师岗位职责
2013/12/24 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
校园安全广播稿范文
2014/09/25 职场文书
中标通知书格式
2015/04/17 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书