在前后端分離開發(fā)模式下,前端項(xiàng)目通常在項(xiàng)目構(gòu)建初期需要使用假數(shù)據(jù)以及相應(yīng)的http請求來進(jìn)行輔助開發(fā),例如在后端接口還沒開發(fā)好下,我們可以模擬http請求以及數(shù)據(jù)來進(jìn)行前端的axios封裝,接口設(shè)計(jì),對http狀態(tài)碼處理等。前端模擬數(shù)據(jù)的方法有許多種,假如你熟悉node.js以及express框架,你可以快速地構(gòu)建一個(gè)后端服務(wù)器來進(jìn)行輔助開發(fā),我本人也比較喜歡這種方式,這種方法在我日后的文章將會(huì)有介紹。如果你不熟悉node也沒關(guān)系,我將一步一步教你如何在前端vue項(xiàng)目中使用mock.js來構(gòu)建一個(gè)模擬假數(shù)據(jù)環(huán)境。
1 ,安裝mock.js
npm install mockjs --save
2,安裝axios
npm install axios --save
3新建一個(gè)文件夾mock 下面有一個(gè)文件mock.js,mock.js作用主要用來生成假數(shù)據(jù)以及提供了一個(gè)服務(wù)器,有了這個(gè)服務(wù)器我們通過定義api來訪問mock.js生成的數(shù)據(jù)
mock.js內(nèi)容
const Mock = require('mockjs');const Random = Mock.Random;//造新聞列表數(shù)據(jù)const produceNewsData = function() {  let articles = [];  for (let i = 0; i < 100; i++) {    let newArticleObject = {      title: Random.csentence(5, 30), // Random.csentence( min, max )      thumbnail_pic_s: Random.dataImage('300x250', 'mock的圖片'), // Random.dataImage( size, text ) 生成一段隨機(jī)的 Base64 圖片編碼      author_name: Random.cname(), // Random.cname() 隨機(jī)生成一個(gè)常見的中文姓名      date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默認(rèn)為yyyy-MM-dd;Random.time() 返回一個(gè)隨機(jī)的時(shí)間字符串    }    articles.push(newArticleObject)  }   return {    articles: articles  }};上述mock.js內(nèi)容主要是引入mock模塊,然后生成100條新聞列表數(shù)據(jù).對于mock生成數(shù)據(jù)的一些規(guī)則就省略了,讀者可以自己去mock官網(wǎng)了解一些常用的生成規(guī)則。例如Random.csentence(5, 30)代表的含義。
這里再演示幾個(gè)生成數(shù)據(jù)的方法
//生成100個(gè)用戶登入信息const produceUserInfo=function(){  let Users=[];  let type=['游客','會(huì)員','管理員'];  for(let i=0;i<100;i++){   let obj=Mock.mock({    userId:i+1,    userName:Random.cname(),    userEmail:Random.email(),    'userType|+1':type   })   Users.push(obj);  }};//生成一篇文章詳情const articleDetail=function(){ let obj={}; obj.author_name=Random.cname(); obj.title=Random.csentence(5, 30); obj.publish_date=Random.date(); obj.content=Random.paragraph(100); obj.view=Random.integer(0, 10000); obj.source='今日頭條' return{  data:obj }}//生成類型列表數(shù)據(jù)const getlist=function(){ let arr=[] for(let i=0;i<100;i++){   let obj={};   obj.id=i+1;   obj.title=Random.csentence(5, 30);   obj.date=Random.date();   arr.push(obj); } return {  data:arr }}const adminInfo=[ {  name:'admin',  password:'admin',  email:'4399@qq.com' },{  name:'test',  password:'test',  email:'1341313944@qq.com' },{  name:'admin',  password:'abc123',  email:'112360@qq.com' },{ }]            
新聞熱點(diǎn)
疑難解答
圖片精選