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 style 中visibility和display之间的区别
Jan 22 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
Mar 05 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
Jan 15 Javascript
jquery队列函数用法实例
Dec 16 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
小程序中canvas的drawImage方法参数使用详解
Jul 04 Javascript
java和js实现的洗牌小程序
Sep 30 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 smarty 二级分类代码和模版循环例子
2011/06/01 PHP
php生成QRcode实例
2014/09/22 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
js表单登陆验证示例
2016/10/19 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
Python如何操作docker redis过程解析
2020/08/10 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
2014植树节活动总结
2014/03/11 职场文书
学习雷锋倡议书
2014/04/15 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
工作态度检讨书范文
2015/05/06 职场文书
电力安全学习心得体会
2016/01/18 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
关于vue-router-link选择样式设置
2022/04/30 Vue.js