mock會攔截下指定的請求,並返回由mock計算出的數據。
mock攔截下的請求不會在network裏出現。
mock方便前端脫離後端進行開發。
先來一個dome說明怎麼使用。mock怎麼與項目結合使用。前端
npm i mockjs
// 安裝mockjsrequire('./mock.js')
// 全項目均可使用mock接口。first.vue
// 用來使用mock.js的數據。api.js
,建議放在'src/lib/api.js'。 // 用來封裝axios。這樣作對於項目規範。非要每一個請求都實例出axios也行。作了以上5步,就能夠在first.vue文件時使用api.js調用mock了。 vue
下面是具體代碼。ios
// mock.js import Mock from 'mockjs' const Random = Mock.Random let name = [] // 模板 for (let i = 0; i < 3; i++) { // 在模板中生成多條數據 name.push({ name: Random.string(3, 8), age: Mock.mock({ 'number|1-100': 100 }) }) } let age = { ages: Mock.mock({ 'number|1-100': 100 }) } Mock.setup({ timeout: '200' // 2s-2s後返回數據 }) Mock.mock('/data/name', 'post', name) Mock.mock('/data/age', 'get', age)
// main.js require('./mock.js')
// first.vue <template> <div class="basic"> basic </div> </template> <script> export default { props: {}, data () { return { } }, computed: { }, components: { }, methods: {}, created () {}, mounted () {} } </script> <style lang="sass" scoped> .basic </style>
// api.js import axios from 'axios' // 請求攔截 axios.interceptors.request.use(res => { return res }, error => { return Promise.reject(error) }) // 響應攔截 axios.interceptors.response.use(res => { console.log('res', res) return res }, error => { return Promise.reject(error) }) // 封裝post const fetch = (url, params) => { return new Promise((resolve, reject) => { axios({url: url, params: params, method: 'post'}).then(res => { resolve(res.data) }).catch(err => { reject(err) }) }) } // 輸出 export default { mockData (url, params) { return fetch(url, params) }, mockDataAge (url, params) { return new Promise((resolve, reject) => { axios({url: url, params: params, method: 'get'}).then(res => { resolve(res.data) }).catch(err => { reject(err) }) }) } }
// first.vue // 引入 import api from '../../lib/api.js' // 使用 getData () { api.mockData('/data/name').then(res => { this.dataName = res }) }, getDataAge () { api.mockDataAge('/data/age').then(res => { this.dataAge = res }) }
數據模板在官網都沒有定義。我理解是數據模板就是Mock.mock()
裏使用的對象。
數據佔位符是數據模板中用來生成指定類型數據的佔位符。使用@佔位符(params[,params])
表示。
Mock.Random是一個工具類,用來生成各類隨機數據。
數據模板中@佔位符(params[,params])
是佔位符,用來生成相應數據。有人把佔位符理解爲mock內置模板。畢竟Mock.mock()
使用它們做爲參數。git
網上有好多關於mock的文章。都沒說清楚模板是什麼,作什麼的,怎麼用。佔位符是什麼,作什麼的,怎麼用。
官網上也不寫demo.看了好幾遍就看到api.能不能從大到小寫文檔?
爲何進入官網學教程又進入git裏的wiki?
優勢是官網的api寫的好。能夠在console裏運行。npm