詳解在vue-cli項目中使用mockjs(請求數(shù)據(jù)刪除數(shù)據(jù))
在我們的生產(chǎn)實際中,后端的接口往往是較晚才會出來,于是我們的前端的許多開發(fā)都要等到接口給我們才能進(jìn)行,這樣對于我們前端來說顯得十分的被動,于是有沒有可以制造假數(shù)據(jù)來模擬后端接口呢,答案是肯定的。于是今天我們來介紹一款非常強大的插件Mock.js ,可以非常方便的模擬后端的數(shù)據(jù),也可以輕松的實現(xiàn)增刪改查這些操作,在后臺數(shù)據(jù)完成之后,你所做的只是去掉mockjs:停止攔截真實的ajax,僅此而已。
搭建一個vue項目
# 全局安裝 vue-cli $ npm install --global vue-cli # 創(chuàng)建一個基于 webpack 模板的新項目 vue init webpack vue-mock $ cd my-project # 安裝依賴 $ npm install
安裝mockjs
npm install mockjs --save-dev
開啟項目
npm run dev
創(chuàng)建一個mockjs文件夾以及mockjs,并且在main.js引入這個文件
此時可以看到像這樣的一個項目結(jié)構(gòu)

mockjs的使用
在項目中的mock.js文件中,寫入模擬的數(shù)據(jù),此時我們可以參照一下mockjs的文檔。
// 使用 Mock
var Mock = require('mockjs')
var data = Mock.mock({
// 屬性 list 的值是一個數(shù)組,其中含有 1 到 10 個元素
'list|1-10': [{
// 屬性 id 是一個自增數(shù),起始值為 1,每次增 1
'id|+1': 1
}]
})
// 輸出結(jié)果
console.log(JSON.stringify(data, null, 4))
接下來可以做我們想要做的事了
在mock.js中模擬簡單的一些數(shù)據(jù)
const Mock = require('mockjs');
// 獲取 mock.Random 對象
const Random = Mock.Random;
// mock一組數(shù)據(jù)
const produceData = function (opt) {
console.log('opt', opt);
let articles = [];
for (let i = 0; i < 30; i++) {
let newArticleObject = {
title: Random.csentence(5, 30), // Random.csentence( min, max )
thumbnail_pic_s: Random.dataImage('300x250', 'mock的圖片'), // Random.dataImage( size, text ) 生成一段隨機的 Base64 圖片編碼
author_name: Random.cname(), // Random.cname() 隨機生成一個常見的中文姓名
date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默認(rèn)為yyyy-MM-dd;Random.time() 返回一個隨機的時間字符串
}
articles.push(newArticleObject)
}
return {
data: articles
}
}
Mock.mock('/news', /post|get/i, produceData);//當(dāng)post或get請求到/news路由時Mock會攔截請求并返回上面的數(shù)據(jù)
在vue中請求
methods: {
setNewsApi: function() {
this.$http.post("/news", "type=top&key=123456").then(res => {
console.log(res.data);
this.newsListShow = res.data.data;
});
}
}
效果預(yù)覽

再做一個刪除的處理
模擬數(shù)據(jù)
let arr = []
for (let i = 0; i < 30; i++) {
let newArticleObject = {
name: Random.cname(), // Random.cname() 隨機生成一個常見的中文姓名
content: Random.csentence(5, 30), // Random.csentence( min, max )
id: i
}
arr.push(newArticleObject);
}
let list = function (options) {
let rtype = options.type.toLowerCase(); //獲取請求類型
switch (rtype) {
case 'get':
break;
case 'post':
let id = parseInt(JSON.parse(options.body).params.id) //獲取刪除的id
arr = arr.filter(function(val){
return val.id!=id;//把這個id對應(yīng)的對象從數(shù)組里刪除
});
break;
default:
}
return {
data: arr
} //返回這個數(shù)組,也就是返回處理后的假數(shù)據(jù)
}
Mock.mock('/list', /get|post/i, list);//get用于請求數(shù)據(jù),post用于刪除數(shù)據(jù)
vue中使用
methods: {
setNewsApi: function() {
this.$http.get("/list", "").then(res => {
this.data = res.data.data;
});
},
deleteList(data) { //刪除數(shù)據(jù)
let id = data.id;
this.$http.post('/list', {
params: {
id: id
}
}).then(function(res) {
console.log(res);
this.data = res.data.data;
alert(data.name + '刪除成功');
}.bind(this))
.catch(function(error) {
console.log(error)
});
},
}
效果預(yù)覽

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue創(chuàng)建項目后沒有webpack.config.js(vue.config.js)文件的解決
這篇文章主要介紹了Vue創(chuàng)建項目后沒有webpack.config.js(vue.config.js)文件的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
使用Vue3+ElementPlus前端實現(xiàn)分片上傳的全過程
ElementPlus是一套為開發(fā)者、設(shè)計師和產(chǎn)品經(jīng)理準(zhǔn)備的基于Vue?3.0的組件庫,提供了配套設(shè)計資源,幫助你的網(wǎng)站快速成型,下面這篇文章主要給大家介紹了關(guān)于使用Vue3+ElementPlus前端實現(xiàn)分片上傳的相關(guān)資料,需要的朋友可以參考下2022-11-11
element ui中表單el-form的label如何設(shè)置寬度
這篇文章主要介紹了element ui中表單el-form的label如何設(shè)置寬度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
Vue組件教程之Toast(Vue.extend 方式)詳解
這篇文章主要給大家介紹了關(guān)于Vue組件教程之Toast(Vue.extend 方式)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01

