之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示。在本地时,json server很好使用,但一旦放在github上就实现不了我们期望的效果了;后来发现 mockjs 这个插件就满足这一需求。研究了半天,感觉 mockjs 模拟数据更强大,通过随机数据,可以模拟各种场景,下面一步步的来实现在 vue-cli创建的项目中添加一条用户信息的数据模拟接口:

安装 mockjs

  • 在vue项目安装mockjs
  1. npm install mockjs --save-dev
  • 在项目src 目录中创建一个 mock.js文件

  • main.js 入口文件中引入刚刚创建的mock 文件

  1. import './mock.js'

创建模拟数据

mock.js中创建一条用户信息模拟数据

  1. import Mock from 'mockjs'
  2. const Random = Mock.Random
  3. // 设置全局延时,没有延时的话,有时候会检测不到数据变化
  4. Mock.setup({
  5. timeout: '300-600'
  6. })
  7. // 创建一个数组用来接收模拟的数据
  8. const mocklist = []
  9. const count = 5;
  10. for (let i = 0; i < count; i++) {
  11. mocklist.push(Mock.mock({
  12. id: '@id',
  13. name: '@cname',
  14. 'phone|1': /^1[0-9]{10}$/,
  15. email: '@email',
  16. 'education|1': ['本科', '大专', '硕士', '博士', '中专'],
  17. 'graduationschool|1': ['西南财经', '北京交通大学', '重庆工商大学', '清华大学', '西南大学', '上海复旦大学'],
  18. 'profession|1': ['教授', '律师', '医生', '公务员', '大学老师', '警察', '白领'],
  19. profile: '@cparagraph'
  20. }))
  21. }

接下来进一步实现增删改查的各个数据接口,这里我的需求是,只使用一次模拟数据,后面使用 localStorage 来进行存储数据。

  1. // 获取用户信息列表
  2. function getList() {
  3. // 若 localStorage 没有数据,则将 Mock 的数据存入
  4. if (!localStorage.getItem('userlist')) {
  5. localStorage.setItem('userlist',JSON.stringify(mocklist))
  6. }
  7. // 每次获取数据时,再从 localStorage 中拉取数据
  8. var userlist = JSON.parse(localStorage.getItem('userlist'))
  9. return userlist
  10. }
  11. // 获取单个用户信息
  12. function getUser(options) {
  13. // 先从 localStorage 中拉取数据
  14. var userlist = JSON.parse(localStorage.getItem('userlist'))
  15. // 遍历数组,返回id 与传来 id 相当的一个对象
  16. for( let index in userlist) {
  17. if (userlist[index].id === options.body) {
  18. var user = userlist[index]
  19. return user
  20. }
  21. }
  22. }
  23. // 删除用户信息
  24. function deleteUser(options) {
  25. // 先从 localStorage 中拉取数据
  26. var userlist = JSON.parse(localStorage.getItem('userlist'))
  27. // 根据传递的 id 删除 用户
  28. for( let index in userlist ) {
  29. if (userlist[index].id === options.body) {
  30. userlist.splice(index,1)
  31. localStorage.setItem('userlist', JSON.stringify(userlist))
  32. }
  33. }
  34. return {
  35. data: '用户删除成功'
  36. }
  37. }
  38. // 添加用户信息
  39. function addUser(options) {
  40. // 先从 localStorage 中拉取数据
  41. var userlist = JSON.parse(localStorage.getItem('userlist'))
  42. // 获取传入用户信息对象,是一个字符串,需要转化为对象
  43. var user = JSON.parse(options.body)
  44. // 使用 mock 随机生成一个 id
  45. user.id = Random.id()
  46. // 将 user 插入到 userlist 中
  47. userlist.unshift(user)
  48. // 重新将 userlist 存入 localStorage 中
  49. localStorage.setItem('userlist', JSON.stringify(userlist))
  50. return {
  51. data: '用户添加成功'
  52. }
  53. }
  54. // 更新用户信息
  55. function updateUser(options) {
  56. // 先从 localStorage 中拉取数据
  57. var userlist = JSON.parse(localStorage.getItem('userlist'))
  58. var user = JSON.parse(options.body)
  59. // 遍历 userlist 根据传入对象的 id 更新用户信息
  60. for ( let index in userlist ) {
  61. if ( userlist[index].id === user.id ) {
  62. userlist[index] = user
  63. }
  64. }
  65. localStorage.setItem('userlist', JSON.stringify(userlist))
  66. return {
  67. data: '用户更新成功'
  68. }
  69. }
  70. // 制作各个接口
  71. Mock.mock('/getlist', 'get', getList)
  72. Mock.mock('/getuser', 'post', getUser)
  73. Mock.mock('/deleteuser', 'post', deleteUser)
  74. Mock.mock('/adduser', 'post', addUser)
  75. Mock.mock('/updateuser', 'post', updateUser)
  76. // 最后将 Mock 导出
  77. export default Mock

这样在需要的组件里就可以使用相应的接口了

案例预览

最后我将的这个demo放到了线上,可以点在线预览查看实现的效果

在线预览

如何在Vue中使用Mockjs模拟数据的增删查改的更多相关文章

  1. 利用dbutils工具实现数据的增删查改操作(dbutis入门)

    一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...

  2. mysql数据库,数据表,数据的增删查改语句

    查询mysql支持的引擎 show engines; 查询mysql支持的字符集 show character set; 设置mysql默认存储引擎 set default_storage_engin ...

  3. ASP.NET使用EasyUI-DataGrid + ashx + JQuery Ajax:实现数据的增删查改,查询和分页!

    转自:http://www.cnblogs.com/lt-style/p/3457399.html 数据表: 学生表:学生编号.姓名.性别.班级编号.年龄 班级表:班级编号.班级名称 开发过程: 1. ...

  4. MyBatis3-实现单表数据的增删查改

    继续前一篇文章http://www.cnblogs.com/EasonJim/p/7050710.html所示的例子,返回的是单个实体,而接下来将进行列表的返回等操作: 一.查询列表 查询出列表,也就 ...

  5. SQLServer数据操作(建库、建表以及数据的增删查改)

              SQLSever数据操作   一.建立数据库:   create database DB ---数据库名称 (          name=data1 --文件名,         ...

  6. SQLServer数据操作(建库、建表以及数据的增删查改)[转]

    SQLSever数据操作   一.建立数据库:   create database DB ---数据库名称 (          name=data1 --文件名,          filename ...

  7. 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  8. 在MVC中使用泛型仓储模式和依赖注入实现增删查改

    标签: 原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository ...

  9. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

随机推荐

  1. 新手的grid布局

    html部分 <!DOCTYPE html><html><head><meta charset="utf-8"><link r ...

  2. eclipse的应用和整理

    1如何在eclipse中获取动态项目的绝对路径 1.鼠标选中项目,右击菜单,选择properties2.出来弹出框,选择resource,location的值就是你想要的项目绝对路径 JSP中获得当前 ...

  3. html网页访问WebAPI中的方法遇到的问题

      1.移动端访问远程服务时,建议使用WebAPI 2.用不同浏览器访问WebAPI时返回的文本格式是不同的,Chrome Firefox将在浏览器中以XML形式显示此列表,IE浏览器将获得Json格 ...

  4. Matlab GUI选项卡

    1.在这个网址下载一个工具包,里面应该有四个文件:tabselectionfcp.p.tabselectionfcn.m.tabpanel.p和tabpanel.m,显然代码用.p格式进行加密了. 2 ...

  5. SharePoint2010 HTTP Error 503. The service is unavailable 解决方法

    1.更改系统管理员用户密码前提 因为更改系管理员用户密码会影响到 "SharePoint2010"正常运行,所在尽量不要更改系统管理员用户的密码, 必须更改密码的话,需要注意以两点 ...

  6. traceroute工具

    traceroute是类Unix的命令工具,用于测试到网络上某台主机host的跳数以及延时情况.其运行原理是,通过发送指定TTL的UDP包给目的主机host,通过将TTL逐渐增大,就能收到一些ICMP ...

  7. 源码安装mysql,及主从同步

    源码安装mysql [可选] 如果用源码安装cmake软件: cd /home/oldboy/tools/ tar xf cmake-.tar.gz cd cmake- ./configure #CM ...

  8. expdp/impdp使用sysdba权限迁移数据

    expdp 'userid="/ as sysdba"' directory=DATA_PUMP_DIR full=y logfile=fullexp.log estimate_o ...

  9. June 10th 2017 Week 23rd Saturday

    A lot of things, we can be touched, but we can not shed tears. 很多事情,我们可以感动,却不能流泪. Sometimes I was to ...

  10. SAP订单编排和流程增强概述

    SAP产品里的订单处理,无论是On-Premises解决方案还是云产品,我认为归根到底可以概括成四个字:订单编排,包含两个层次的内容: 1. 单个订单通过业务流程或者工作流驱动的状态迁移: 2. 多种 ...