[PuffBook項(xiàng)目總結(jié)]mock.js模擬數(shù)據(jù),axios做HTTP請(qǐng)求

  1. mock.js源碼:https://github.com/nuysoft/Mock
  2. 替換原生的XMLHttpRequest,使用簡(jiǎn)便,不需要改變現(xiàn)有的請(qǐng)求代碼
  3. 本項(xiàng)目采用axios做網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù),請(qǐng)求完畢后,代碼在線上和線下都是一樣的,不需要去替換,在線下本地調(diào)試的時(shí)候,axios請(qǐng)求完,mockjs會(huì)把原生的XMLHttpRequest做一個(gè)替換,然后返回mock.js的接口
  4. 提供豐富的數(shù)據(jù)類型
  5. 無(wú)法支持blob類型,無(wú)法模擬下載(我們的電子書下載的時(shí)候會(huì)使用Blob類型)

使用mock.js

  • 安裝mock.js
npm i mockjs --D
  • 安裝axios
npm i axios --save
  • 創(chuàng)建mock文件夾,提供原數(shù)據(jù)(一些json文件,用來(lái)做接口數(shù)據(jù)的模擬)


    image.png
  • mock文件夾下創(chuàng)建index.js 并在項(xiàng)目的main.js中引入

  • 在index.js中做初始化

import Mock from 'mockjs'
import home from './bookHome' // 首頁(yè)的所有數(shù)據(jù)
import shelf from './bookShelf' // 書架的所有數(shù)據(jù)
import list from './bookList' // 圖書的所有列表
import flatList from './bookFlatList' // 方便做查詢用的

// 第一個(gè)參數(shù),正則表達(dá)式匹配所請(qǐng)求的URL
Mock.mock(/\/book\/home/, 'get', home) // 前端請(qǐng)求/book/home的時(shí)候,就會(huì)請(qǐng)求home里的數(shù)據(jù)
Mock.mock(/\/book\/shelf/, 'get', shelf)
Mock.mock(/\/book\/list/, 'get', list)
Mock.mock(/\/book\/flat-list/, 'get', flatList)
  • 在src目錄下創(chuàng)建api目錄,創(chuàng)建store.js利用axios做數(shù)據(jù)請(qǐng)求
import axios from 'axios'
export function home() {
  return axios({
    method: 'get',
    url: `${process.env.VUE_APP_BASE_URL}/book/home`
  })
}

這樣做就可以請(qǐng)求mock里Home中的數(shù)據(jù)

  • 在StoreHome組件中調(diào)用接口home(),這里異步拿到的response就是Home中的數(shù)據(jù)
mounted () {
      // 發(fā)送請(qǐng)求 異步方式拿到結(jié)果
      home().then(response => {
        if (response && response.status === 200) {
          const data = response.data
          const randomIndex = Math.floor(Math.random() * data.random.length)
          this.random = data.random[randomIndex]
          this.banner = data.banner
          this.guessYouLike = data.guessYouLike
          this.recommend = data.recommend
          this.featured = data.featured
          this.categoryList = data.categoryList
          this.categories = data.categories
        }
      })
    }
  • 比如再把這里的random傳給FlapCard子組件
<flap-card :data="random"></flap-card>

大致就是這樣一套完整的流程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容