Vue2 :Mockjs 前端模擬假數(shù)據(jù)

在前后端分離的大環(huán)境下浪感,前端需要后端的接口去完成頁(yè)面的渲染,但是大部分的情況下,前后端需要同時(shí)進(jìn)行開發(fā)饼问,這種情況下,后端還沒完成數(shù)據(jù)輸出影兽,前端只好寫靜態(tài)模擬數(shù)據(jù)。面臨一些問題:數(shù)據(jù)太長(zhǎng)了莱革,將數(shù)據(jù)寫在js文件里峻堰,完成后挨個(gè)改url;某些邏輯復(fù)雜的代碼盅视,加入或去除模擬數(shù)據(jù)時(shí)得小心翼翼捐名;想要盡可能還原真實(shí)的數(shù)據(jù),要么編寫更多代碼闹击,要么手動(dòng)修改模擬數(shù)據(jù)镶蹋;特殊的格式,例如IP,隨機(jī)數(shù)赏半,圖片贺归,地址,需要去收集等等断箫。
Mock.js 正是這樣一款類庫(kù)拂酣,可以幫我們模擬生成一堆數(shù)據(jù),也能解決那些問題仲义。

安裝

mock官網(wǎng)
npm安裝:npm install mockjs
package文件中顯示當(dāng)前mockjs版本說明安裝成功婶熬。
(也可以引入cdn:<script src="http://mockjs.com/dist/mock.js"></script>)

mockjs 文件

在main.js同級(jí)下建立mock.js文件:

// 引入mockjs
const Mock = require('mockjs');
const qs = require('qs');
// 獲取 mock.Random 對(duì)象
const Random = Mock.Random;

// 登錄
const login = function() {
  let status = false;//登錄狀態(tài):ture--成功,false--失敗
  status = true;
  return {
    status: status
  }
}
// 表格分頁(yè)
const tblList = function(param) {
  param = param.body || '';//獲取傳過來(lái)的參數(shù)
  // console.log(qs.parse(param));//因?yàn)閍xios的post帶參數(shù)被qs.stringfy()轉(zhuǎn)換了埃撵,需要轉(zhuǎn)回來(lái)尸诽。
    if(param == ''){
      //無(wú)查詢條件
    let bookdata = Mock.mock({
      'books|1-10': [{
        'sid|+1': 1,
        'date': '@date("yyyy-MM-dd")',
        'name': '@csentence()',
        'address': '@county(true)',
        'region': '雙流區(qū)'
      }]
    });
    // console.log(bookdata);
    return bookdata;

  }else{
      //帶查詢條件
    let paramObj = qs.parse(param);
    console.log('input parameter:...');
    console.log(paramObj);
    let books = [];
    for (let i = 0; i < 10; i++) {
      let newBook = {
        // thumbnail_pic_s: Random.dataImage('300x250', 'mock的圖片'), // Random.dataImage( size, text ) 生成一段隨機(jī)的 Base64 圖片編碼
        date: Random.date(),
        name: paramObj.name+Random.csentence(),
        address: Random.county(true),
        region: paramObj.region
      }
      books.push(newBook)
    }
    return {
      books: books
    }
  }

}
//圖書列表
const bookList = function(param) {
  param = param.body || '';//獲取傳過來(lái)的參數(shù)
  // console.log(qs.parse(param));
  // 因?yàn)閍xios的post帶參數(shù)被qs.stringfy()轉(zhuǎn)換了,需要轉(zhuǎn)回來(lái)盯另。
  let paramObj = qs.parse(param);
  console.log(paramObj);
  let nameInput = paramObj.name || '';
  let books = [];
  for (let i = 0; i < 10; i++) {
    let temp = i+1;
    let newBook = {
      sid: temp,
      // thumbnail_pic_s: Random.dataImage('300x250', 'mock的圖片'), // Random.dataImage( size, text ) 生成一段隨機(jī)的 Base64 圖片編碼
      author: Random.name(2,4),
      name: '《'+nameInput+Random.csentence()+"》",
      publishAt: Random.date(),
      description: Random.cparagraph()
    }
    books.push(newBook)
  }
  return {
    books: books
  }
}
//獲取文件列表
const fileList = function (param) {
  param = param.body || '';//獲取傳過來(lái)的參數(shù)
  // console.log(qs.parse(param));
  // 因?yàn)閍xios的post帶參數(shù)被qs.stringfy()轉(zhuǎn)換了性含,需要轉(zhuǎn)回來(lái)。
  let paramObj = qs.parse(param);
  console.log(paramObj);
  let files = [];
  for (let i = 0; i < 3; i++) {
    let newFile = {
      name: paramObj.username + i +'.png',
      url: Random.dataImage('300x250', 'mock的圖片'), // Random.dataImage( size, text ) 生成一段隨機(jī)的 Base64 圖片編碼
    }
    files.push(newFile)
  }
  return {
    fileList: files
  }
}

// Mock.mock( url, post/get , 返回的數(shù)據(jù))鸳惯;
Mock.mock('/mk_login', 'post', login);// 登錄
Mock.mock('/mk_tbllist', 'post', tblList);// 表格分頁(yè)
Mock.mock('/mk_booklist', 'post',bookList);// 圖書列表
Mock.mock('/mk_fileupload', 'post',{});// 文件上傳
Mock.mock('/mk_fetchFiles', 'post',fileList);// 獲取文件列表

main.js 引入mock

在main.js中引入mock文件:
require('./mock');

使用

vue文件中訪問該接口mock:
(調(diào)用的url接口和mock.js文件的Mock.mock( url, post/get , 返回的數(shù)據(jù))的url接口一致商蕴,就能被mock攔截。)

api.post('/mk_login', data)
              .then(res => {
                console.log(res.data);
                if(res.data.status){
                  // 登錄成功
                  this.setUserInfo2(data);
                  this.$router.replace('/home');
                }
              })
              .catch(error => {
                console.log("login異常:")
                console.log(error)
              })

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绪商,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子辅鲸,更是在濱河造成了極大的恐慌格郁,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異例书,居然都是意外死亡锣尉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門决采,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)自沧,“玉大人,你說我怎么就攤上這事树瞭∧聪幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵晒喷,是天一觀的道長(zhǎng)孝偎。 經(jīng)常有香客問我,道長(zhǎng)凉敲,這世上最難降的妖魔是什么邪媳? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮荡陷,結(jié)果婚禮上雨效,老公的妹妹穿的比我還像新娘。我一直安慰自己废赞,他們只是感情好徽龟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唉地,像睡著了一般据悔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耘沼,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天极颓,我揣著相機(jī)與錄音,去河邊找鬼群嗤。 笑死菠隆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狂秘。 我是一名探鬼主播骇径,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼者春!你這毒婦竟也來(lái)了破衔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钱烟,失蹤者是張志新(化名)和其女友劉穎晰筛,沒想到半個(gè)月后嫡丙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡读第,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年曙博,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卦方。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡羊瘩,死狀恐怖泰佳,靈堂內(nèi)的尸體忽然破棺而出盼砍,到底是詐尸還是另有隱情,我是刑警寧澤逝她,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布浇坐,位于F島的核電站,受9級(jí)特大地震影響黔宛,放射性物質(zhì)發(fā)生泄漏近刘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一臀晃、第九天 我趴在偏房一處隱蔽的房頂上張望觉渴。 院中可真熱鬧,春花似錦徽惋、人聲如沸案淋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)踢京。三九已至,卻和暖如春宦棺,著一層夾襖步出監(jiān)牢的瞬間瓣距,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工代咸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹈丸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓呐芥,卻偏偏與公主長(zhǎng)得像白华,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贩耐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理弧腥,服務(wù)發(fā)現(xiàn),斷路器潮太,智...
    卡卡羅2017閱讀 134,672評(píng)論 18 139
  • 姜小白是誰(shuí)管搪?聽起來(lái)挺小資的虾攻,象是個(gè)白領(lǐng)的名字。如果不知道更鲁,那么姬重耳熟悉點(diǎn)吧霎箍?嗯,這名字聽起來(lái)比較古老澡为。沒...
    茶者子澄閱讀 728評(píng)論 2 1
  • 車小千閱讀 263評(píng)論 2 0
  • 又是周五 每周五下午漂坏,我都早早買菜回家迎接兒子周末回來(lái)團(tuán)聚,今天依然如此媒至。 到家后先把鍋碗瓢盆全刷...
    AA靜待花開閱讀 251評(píng)論 0 5