天天看點

Vue項目中引入mockjs

前提:建立好的vue項目

前言:

  • 為什麼引入mockjs:為了實作前後端分離,開發工作可以異步進行
  • 其他工具:axios
  • 一般的前後端互動過程:前端 --> ajax請求 --> 網絡協定 --> 後端服務 --> 後端處理後傳回請求結果給前端 --> 前端接收請求結果,做後續處理
  • 前後端分離的互動過程:前端 --> axios --> 網絡協定 --> mockjs模拟請求結果 --> 前端接收Mock出來的資料,做後續處理
  • 相當于mockjs充當原本的背景服務的角色,axios充當api請求的角色。

1、安裝 mockjs 和 axios

轉到項目根目錄,輸入指令:

#npm install axios --save-dev

#npm install mockjs --save-dev

【慢的話用國内鏡像,cnpm指令即可】

2、添加mock規則

/src/mock.js

// 引入mockjs
const Mock = require('mockjs')
// 擷取 mock.Random 對象
const Random = Mock.Random
// mock一組資料
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 ) 生成一段随機的 Base64 圖檔編碼
            author_name: Random.cname(), // Random.cname() 随機生成一個常見的中文姓名
            date: Random.date() + ' ' + Random.time() // Random.date()訓示生成的日期字元串的格式,預設為yyyy-MM-dd;Random.time() 傳回一個随機的時間字元串
        }
        articles.push(newArticleObject)
    }
 
    return {
        articles: articles
    }
}
 
// Mock.mock( url, post/get , 傳回的資料)
Mock.mock('/news/index', 'post', produceNewsData)        

3、在 main.js 引入并注冊

require('./mock.js')

4、其他:

Mock官網:Mock.mock(rurl, rtype, template),記錄資料模闆。當攔截到比對 rurl 和 rtype 的 Ajax 請求 時,将根據模闆 template 生成模拟資料,并作為相應資料傳回。

  • rurl:表示需要攔截的 URL,可以是 URL字元串或 URL正則,如:‘/domin/list.json’    /\/domian\/list\.jsaon\
  • rtype:表示需要攔截的Ajax請求類型。如 GET、POST、PUT、DELETE等。
  • template:表示資料模闆。可以是對象或字元串。如 {‘data|1-10’:[{}]}、‘@EMAIL’

是以說此時如果要想通過axios(模拟的是http請求)調用mockjs,那麼需要用ajax請求。

資料:

1. vue+mockjs 模拟資料,實作前後端分離開發