如何在Vue中使用Mockjs模拟数据的增删查改
之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示。在本地时,json server很好使用,但一旦放在github上就实现不了我们期望的效果了;后来发现 mockjs 这个插件就满足这一需求。研究了半天,感觉 mockjs 模拟数据更强大,通过随机数据,可以模拟各种场景,下面一步步的来实现在 vue-cli创建的项目中添加一条用户信息的数据模拟接口:
安装 mockjs
- 在vue项目安装mockjs
npm install mockjs --save-dev
在项目
src目录中创建一个mock.js文件在
main.js入口文件中引入刚刚创建的mock 文件
import './mock.js'
创建模拟数据
在 mock.js中创建一条用户信息模拟数据
import Mock from 'mockjs'
const Random = Mock.Random
// 设置全局延时,没有延时的话,有时候会检测不到数据变化
Mock.setup({
timeout: '300-600'
})
// 创建一个数组用来接收模拟的数据
const mocklist = []
const count = 5;
for (let i = 0; i < count; i++) {
mocklist.push(Mock.mock({
id: '@id',
name: '@cname',
'phone|1': /^1[0-9]{10}$/,
email: '@email',
'education|1': ['本科', '大专', '硕士', '博士', '中专'],
'graduationschool|1': ['西南财经', '北京交通大学', '重庆工商大学', '清华大学', '西南大学', '上海复旦大学'],
'profession|1': ['教授', '律师', '医生', '公务员', '大学老师', '警察', '白领'],
profile: '@cparagraph'
}))
}
接下来进一步实现增删改查的各个数据接口,这里我的需求是,只使用一次模拟数据,后面使用 localStorage 来进行存储数据。
// 获取用户信息列表
function getList() {
// 若 localStorage 没有数据,则将 Mock 的数据存入
if (!localStorage.getItem('userlist')) {
localStorage.setItem('userlist',JSON.stringify(mocklist))
}
// 每次获取数据时,再从 localStorage 中拉取数据
var userlist = JSON.parse(localStorage.getItem('userlist'))
return userlist
}
// 获取单个用户信息
function getUser(options) {
// 先从 localStorage 中拉取数据
var userlist = JSON.parse(localStorage.getItem('userlist'))
// 遍历数组,返回id 与传来 id 相当的一个对象
for( let index in userlist) {
if (userlist[index].id === options.body) {
var user = userlist[index]
return user
}
}
}
// 删除用户信息
function deleteUser(options) {
// 先从 localStorage 中拉取数据
var userlist = JSON.parse(localStorage.getItem('userlist'))
// 根据传递的 id 删除 用户
for( let index in userlist ) {
if (userlist[index].id === options.body) {
userlist.splice(index,1)
localStorage.setItem('userlist', JSON.stringify(userlist))
}
}
return {
data: '用户删除成功'
}
}
// 添加用户信息
function addUser(options) {
// 先从 localStorage 中拉取数据
var userlist = JSON.parse(localStorage.getItem('userlist'))
// 获取传入用户信息对象,是一个字符串,需要转化为对象
var user = JSON.parse(options.body)
// 使用 mock 随机生成一个 id
user.id = Random.id()
// 将 user 插入到 userlist 中
userlist.unshift(user)
// 重新将 userlist 存入 localStorage 中
localStorage.setItem('userlist', JSON.stringify(userlist))
return {
data: '用户添加成功'
}
}
// 更新用户信息
function updateUser(options) {
// 先从 localStorage 中拉取数据
var userlist = JSON.parse(localStorage.getItem('userlist'))
var user = JSON.parse(options.body)
// 遍历 userlist 根据传入对象的 id 更新用户信息
for ( let index in userlist ) {
if ( userlist[index].id === user.id ) {
userlist[index] = user
}
}
localStorage.setItem('userlist', JSON.stringify(userlist))
return {
data: '用户更新成功'
}
}
// 制作各个接口
Mock.mock('/getlist', 'get', getList)
Mock.mock('/getuser', 'post', getUser)
Mock.mock('/deleteuser', 'post', deleteUser)
Mock.mock('/adduser', 'post', addUser)
Mock.mock('/updateuser', 'post', updateUser)
// 最后将 Mock 导出
export default Mock
这样在需要的组件里就可以使用相应的接口了
案例预览
最后我将的这个demo放到了线上,可以点在线预览查看实现的效果
在线预览
如何在Vue中使用Mockjs模拟数据的增删查改的更多相关文章
- 利用dbutils工具实现数据的增删查改操作(dbutis入门)
一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...
- mysql数据库,数据表,数据的增删查改语句
查询mysql支持的引擎 show engines; 查询mysql支持的字符集 show character set; 设置mysql默认存储引擎 set default_storage_engin ...
- ASP.NET使用EasyUI-DataGrid + ashx + JQuery Ajax:实现数据的增删查改,查询和分页!
转自:http://www.cnblogs.com/lt-style/p/3457399.html 数据表: 学生表:学生编号.姓名.性别.班级编号.年龄 班级表:班级编号.班级名称 开发过程: 1. ...
- MyBatis3-实现单表数据的增删查改
继续前一篇文章http://www.cnblogs.com/EasonJim/p/7050710.html所示的例子,返回的是单个实体,而接下来将进行列表的返回等操作: 一.查询列表 查询出列表,也就 ...
- SQLServer数据操作(建库、建表以及数据的增删查改)
SQLSever数据操作 一.建立数据库: create database DB ---数据库名称 ( name=data1 --文件名, ...
- SQLServer数据操作(建库、建表以及数据的增删查改)[转]
SQLSever数据操作 一.建立数据库: create database DB ---数据库名称 ( name=data1 --文件名, filename ...
- 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- 在MVC中使用泛型仓储模式和依赖注入实现增删查改
标签: 原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository ...
- 4.在MVC中使用仓储模式进行增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...
随机推荐
- mvc中在Action里调用另一个Action
今天做东西时发现一个新东西.即在一个Action调用另一Action.前提是同一个控制器.(没在一个控制里的没试过) 调用方法: public ActionResult Test1(){ //to ...
- sqlServer游标的使用
USE [PatPD1]GO/****** Object: UserDefinedFunction [dbo].[fun_GetConditionInner] Script Date: 201 ...
- js之箭头函数
原文 ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: ...
- WinSock 完成端口模型
之前写了关于Winsock的重叠IO模型,按理来说重叠IO模型与之前的模型相比,它的socket即是非阻塞的,也是异步的,它基本上性能非常高,但是它主要的缺点在于,即使我们使用历程来处理完成通知,但是 ...
- Django——admin管理工具
一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...
- es6新语法的使用
1.声明变量: let 声明变量 作用域代码块作用域{} 尽在模块 先使用后声明 会报错 { let a= 12; alert(a) } let 不允许重复声明同一个变量 const 声明是一个常量, ...
- jQuery使用最广泛的javascript函数库
网站建设中,jQuery之最方便的的库了,当用到其中的JavaScript函数库的时候,不禁会想居然还有这么简单的操作? 一.选择网页元素 jQuery的基本设计思想和主要用法,就是"选择某 ...
- solidity语言13
函数过载 合约内允许定义同名函数,但是输入参数不一致 pragma solidity ^0.4.17; contract A { function f(uint _in) public pure re ...
- 在Eclipse中安装JSHint插件
离线安装 1.下载插件包 http://download.eclipsesource.com/~rsternberg/jshint-eclipse-0.9.8.20130728-0004-b94b44 ...
- Django运行访问项目出现的问题:Invalid HTTP_HOST header: '192.168.114.25:8001'. You may need to add u'192.168.114.25' to ALLOWED_HOSTS.
当运行python manage.py runserver 0.0.0.0:8001时候,出现Invalid HTTP_HOST header: '192.168.114.25:8001'. You ...