mock模拟的数据能增删改查吗_vue中使用mockjs实现增删改查

安装开发依赖

npm install mockjs -D

安装mockjs在你的开发依赖上,因为你生产环境用的是正式的接口,安装在开发依赖上可以减少你包的大小。

建立mock文件夹

在src目录中,建立一个mock的文件夹。在mock目录下,建一个index.js和一些其他的js文件(下文是user.js)

image.png

这是一个带分页的mock数据,可以实现增删改查的功能。

在user.js中

import Mock from 'mockjs'

function param2Obj(url) {

const search = url.split('?')[1]

if (!search) {

return {}

}

return JSON.parse('{"' + decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}')

}

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)

}))

}

export default {

/**

* 获取列表

* 要带参数 name, page, limt; name可以不填, page,limit有默认值。

* @param name, page, limit

* @return {{code: number, count: number, data: *[]}}

*/

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: 20000,

count: mockList.length,

data: pageList

}

},

/**

* 增加用户

* @param name, addr, age, birth, sex

* @return {{code: number, data: {message: string}}}

*/

createUser: config => {

const { name, addr, age, birth, sex } = param2Obj(config.url)

List.push({

id: Mock.Random.guid(),

name: name,

addr: addr,

age: age,

birth: birth,

sex: sex

})

return {

code: 20000,

data: {

message: '添加成功'

}

}

},

/**

* 删除用户

* @param id

* @return {*}

*/

deleteUser: config => {

const { id } = param2Obj(config.url)

if (!id) {

return {

code: -999,

message: '参数不正确'

}

} else {

List = List.filter(u => u.id !== id)

return {

code: 20000,

data: {

message: '删除成功'

}

}

}

},

/**

* 批量删除

* @param config

* @return {{code: number, data: {message: string}}}

*/

batchremove: config => {

let { ids } = param2Obj(config.url)

ids = ids.split(',')

List = List.filter(u => !ids.includes(u.id))

return {

code: 20000,

data: {

message: '批量删除成功'

}

}

},

/**

* 修改用户

* @param id, name, addr, age, birth, sex

* @return {{code: number, data: {message: string}}}

*/

updateUser: config => {

const { id, name, addr, age, birth, sex } = param2Obj(config.url)

const sex_num = parseInt(sex)

List.some(u => {

if (u.id === id) {

u.name = name

u.addr = addr

u.age = age

u.birth = birth

u.sex = sex_num

return true

}

})

return {

code: 20000,

data: {

message: '编辑成功'

}

}

}

}

在index.js中

import Mock from 'mockjs'

import tableAPI from './user'

// 用户相关

Mock.mock(/\/user\/getUser/, 'get', tableAPI.getUserList)

Mock.mock(/\/user\/remove/, 'get', tableAPI.deleteUser)

Mock.mock(/\/user\/batchremove/, 'get', tableAPI.batchremove)

Mock.mock(/\/user\/add/, 'get', tableAPI.createUser)

Mock.mock(/\/user\/edit/, 'get', tableAPI.updateUser)

在main.js中

import './mock' //引用mock

在组件中使用

mock

import axios from 'axios'

export default {

name: 'HelloWorld',

data() {

return {

listQuery: {

page: 1,

limit: 10

}

}

},

created() {

// api就是你线上的网址

axios.get('/api/user/getUser', this.listQuery).then((res) => {

console.log(res)

}).catch((err) => {

console.log(err)

});

}

}

请求回来的数据

image.png


版权声明:本文为weixin_42502896原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。