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常用字符串判断函数代码分享
Dec 08 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
Vue.js一个文件对应一个组件实践
Oct 27 Javascript
js数字计算 误差问题的快速解决方法
Feb 28 Javascript
js实现简单的获取验证码按钮效果
Mar 03 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
May 03 Javascript
jquery append与appendTo方法比较
May 24 jQuery
微信小程序实现文字跑马灯效果
May 26 Javascript
使用typescript开发angular模块并发布npm包
Apr 19 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
Jun 05 Javascript
vue自定义指令和动态路由实现权限控制
Aug 28 Javascript
React列表栏及购物车组件使用详解
Jun 28 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递归实现无限分类 格式化数组的详解
2013/06/08 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
JavaScript入门教程 Cookies
2009/01/31 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
python logging类库使用例子
2014/11/22 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
一套比较完整的软件测试人员面试题
2012/05/13 面试题
办公文员的工作岗位职责
2013/11/12 职场文书
会计毕业生自荐信
2013/11/21 职场文书
会计求职信
2014/05/29 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
师德师风事迹材料
2014/12/20 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
2016年寒假见闻
2015/10/10 职场文书
详解JS数组方法
2021/11/20 Javascript
PYTHON 使用 Pandas 删除某列指定值所在的行
2022/04/28 Python
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android