摘要:六使用擴(kuò)展很多時(shí)候,服務(wù)器都有定義固定的返回值,如為則表示該請(qǐng)求有效。
做了一回標(biāo)題黨 (別吐槽,說(shuō)的大實(shí)話(huà),真的可以不用后臺(tái),就能拿數(shù)據(jù),快!,向下看...)一、mock.js 是什么?官網(wǎng)機(jī)票?
簡(jiǎn)單的描述一下, mock.js 可以在后臺(tái)接口沒(méi)有更新時(shí),來(lái)本地模擬數(shù)據(jù)達(dá)到測(cè)試界面功能的一個(gè)很方便的工具庫(kù),mock.js 可以攔截ajax 請(qǐng)求, 重指向并返回你定義的模板數(shù)據(jù)。更多細(xì)節(jié),可查看官網(wǎng)。
? ? JS_CDN:??
? ?Yarn:
yarn add mockjs
? 其它安裝方式可看官網(wǎng)
@parmas rul {string} 攔截請(qǐng)求url 地址,需要與請(qǐng)求地址保持一直,不然無(wú)法攔截請(qǐng)求
@params rtype {string} 請(qǐng)求方式,如果不傳該參數(shù),則post/get請(qǐng)求均可獲得匹配數(shù)據(jù),
注意該字段需要全部小寫(xiě),否則無(wú)法匹配。
@params template {*} 默認(rèn)數(shù)據(jù) (最終請(qǐng)求返回結(jié)果)
@params function {function} options 為請(qǐng)求的數(shù)據(jù),可在下面查看示例,這里不解釋了,
該函數(shù)結(jié)束需要return ,return 數(shù)據(jù)則為最終請(qǐng)求結(jié)果,
可根據(jù)options的參數(shù),處理不同的邏輯
1. Mock.mock( template )
2. Mock.mock( rurl, template )
3. Mock.mock( rurl, function( options ) )
4. Mock.mock( rurl, rtype, template )
5. Mock.mock( rurl, rtype, function( options ) )
列舉基本的使用,更多細(xì)節(jié)描述,可查看官網(wǎng)。?
Mock.setup({
timeout: 400 // 設(shè)置超時(shí)時(shí)間
})
Mock.setup({
timeout: "300 - 6000" // 區(qū)間隨機(jī)超時(shí)時(shí)間
})
目前官網(wǎng)列舉的就一個(gè)參數(shù) timout (ajax 的請(qǐng)求超時(shí)時(shí)間)
Mock.Random?(該功能較多,只列舉部分常用的)?
var Random = Mock.Random //聲明隨機(jī)函數(shù)對(duì)象var randomEmail = Random.email() //隨機(jī)生成郵箱
var randomBoolean = Random.boolean() //隨機(jī)生成布爾值
var randomBase64Img = Random.dataImage() //隨機(jī)生成圖片BASE 64 數(shù)據(jù)
var randomUrl = Random.url() //隨機(jī)生成Url 地址
var randomIp = Random.ip() //隨機(jī)生成ip 地址
var randomColor = Random.color() //隨機(jī)生成布爾值
/**
@params size {String} 需要生成的圖片尺寸 ("600 X 300")
@params background {String} 生成圖片的背景色 默認(rèn)白色 (RBG)
@params text {String} 生成圖片的中間文字 默認(rèn)為圖片尺寸
@params format {Sting} 生成圖片的格式 默認(rèn)為png(可選:jpg/png/gif)
*/
Random.image()
Random.image( size )
Random.image( size, background )
Random.image( size, background, text )
Random.image( size, background, foreground, text )
Random.image( size, background, foreground, format, text )
官方的隨機(jī)支持功能很強(qiáng)大,也很全, 部分隨機(jī)函數(shù)可支持傳參,可定義適合場(chǎng)景的隨機(jī)數(shù)據(jù),因?yàn)?功能太多了,無(wú)法一一列舉,可到官網(wǎng)尋找合適自己的。
官方支持隨機(jī)數(shù)據(jù):
let random = Mock.Random // 隨機(jī)函數(shù)
// 測(cè)試 get
Mock.mock("/get","get",{id: random.id(), name: "GET", email: random.email()})
// 測(cè)試 post
Mock.mock("/post","post",{id: random.id(), name: "POST", email: random.email()})
// 測(cè)試自定義模板
Mock.mock("/template","post", function (option) {
console.log("我是自定義函數(shù)請(qǐng)求參數(shù):", option)
let data = {id: 1, name: "Template",image: random.image()}
return data
})
testRequest("/get", "GET") // 測(cè)試Get 請(qǐng)求
testRequest("/post", "POST") // 測(cè)試Post 請(qǐng)求
testRequest("/template", "POST", {key: "Test Params"}) // 測(cè)試Post 請(qǐng)求
/**
* @Description: Mock 測(cè)試請(qǐng)求
*/
function testRequest (url, type,data = {}) {
let baseUrl = ""
$.ajax({
url: baseUrl + url,
type: type,
data: data,
dataType: "json",
success: res => {
console.log(res)
},
})
}
==> mock/index.js
import Mock from "mockjs"
// 測(cè)試 get
Mock.mock("/get","get",{id: 1, name: "GET"})
// 測(cè)試 post
Mock.mock("/post","post",{id: 1, name: "POST"})
// 測(cè)試自定義模板
Mock.mock("/template","post", function (option) {
console.log("我是自定義函數(shù)請(qǐng)求參數(shù):", option)
let data = {id: 1, name: "Template"}
return data
})
==> main.js // 在main.js 的代碼里引用模擬數(shù)據(jù)文件
*****
import "./mock/index.js"
*****
import axios form "axios"
// 測(cè)試get 請(qǐng)求
axios.get("/get").then(res => { console.log(res) }
// 測(cè)試post 請(qǐng)求
axios.post("/post").then(res => { console.log(res) }
// 測(cè)試自定義模板請(qǐng)求
axios.post("/post", {key: "Test Params"}).then(res => { console.log(res) }
踩坑注意:
?mock.js 的攔截地址,需要與請(qǐng)求地址保持一直,不然無(wú)法攔截請(qǐng)求
?mock.js 攔截的請(qǐng)求,不會(huì)出現(xiàn)在 network 請(qǐng)求列表中。
?mock.js? Mock.mock(..rtype)? rtype參數(shù)注意該字段需要全部小寫(xiě),否則無(wú)法匹配。
很多時(shí)候,服務(wù)器都有定義固定的返回值,如code 為0 則表示該請(qǐng)求有效。那么我們可以封裝一個(gè)函數(shù),每次返回?cái)?shù)據(jù)前都調(diào)用函數(shù),來(lái)格式化服務(wù)器固定的返回模板。
/**
* @Description: 格式化mock 返回?cái)?shù)據(jù)
* @param data {*} 請(qǐng)求數(shù)據(jù)結(jié)果
* @param code {number} 請(qǐng)求狀態(tài)值
* @param msg {Sting} 請(qǐng)求狀態(tài)消息
*/
function formattingData (data, code = 0,msg) {
return {
data: data,
code: code,
msg: msg || (code === 0 ");"請(qǐng)求成功" : "請(qǐng)求失敗")
}
}
// 測(cè)試 get
Mock.mock("/get","get",formattingData({id: 1, name: "GET"}))
// 測(cè)試 get 請(qǐng)求失敗
Mock.mock("/get/err","get",formattingData(undefined,1))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/6966.html
摘要:為了使得前端減輕對(duì)后端的依賴(lài),在后端功能尚未實(shí)現(xiàn)的情況下保證前端進(jìn)度的開(kāi)發(fā),我們一般會(huì)手動(dòng)進(jìn)行一些數(shù)據(jù)模擬,即假數(shù)據(jù)。覆蓋攔截請(qǐng)求,目前內(nèi)置支持。 序 有時(shí)候我們開(kāi)發(fā)一般會(huì)分為前后端,前端負(fù)責(zé)數(shù)據(jù)顯示和UI交互,后端負(fù)責(zé)數(shù)據(jù)IO等等。因此造成前端對(duì)后端有嚴(yán)重依賴(lài),使得前端的開(kāi)發(fā)進(jìn)度普遍滯后于后端。 為了使得前端減輕對(duì)后端的依賴(lài),在后端功能尚未實(shí)現(xiàn)的情況下保證前端進(jìn)度的開(kāi)發(fā),我們一般會(huì)手...
摘要:為了使得前端減輕對(duì)后端的依賴(lài),在后端功能尚未實(shí)現(xiàn)的情況下保證前端進(jìn)度的開(kāi)發(fā),我們一般會(huì)手動(dòng)進(jìn)行一些數(shù)據(jù)模擬,即假數(shù)據(jù)。覆蓋攔截請(qǐng)求,目前內(nèi)置支持。 序 有時(shí)候我們開(kāi)發(fā)一般會(huì)分為前后端,前端負(fù)責(zé)數(shù)據(jù)顯示和UI交互,后端負(fù)責(zé)數(shù)據(jù)IO等等。因此造成前端對(duì)后端有嚴(yán)重依賴(lài),使得前端的開(kāi)發(fā)進(jìn)度普遍滯后于后端。 為了使得前端減輕對(duì)后端的依賴(lài),在后端功能尚未實(shí)現(xiàn)的情況下保證前端進(jìn)度的開(kāi)發(fā),我們一般會(huì)手...
摘要:如何去解決這些問(wèn)題前后端分離大部分的互聯(lián)網(wǎng)公司都分成了前端團(tuán)隊(duì)和后端團(tuán)隊(duì)。方案一采用架構(gòu)業(yè)界很多公司會(huì)采用,單頁(yè)應(yīng)用的架構(gòu),這種架構(gòu)是天然的前后端分離的。方案二淘寶的大前端方案中途島上圖是淘寶基于的前后端分離分層,以及的職責(zé)范圍。 我們遇到了什么問(wèn)題? 1.前端無(wú)法調(diào)試后端未完成的 API:如果后端同學(xué)還沒(méi)有完成 API 開(kāi)發(fā),那么前端同學(xué)就不能對(duì)這個(gè) API 進(jìn)行開(kāi)發(fā)。之前我們都是在...
摘要:致力于解決前后端開(kāi)發(fā)協(xié)作過(guò)程中出現(xiàn)的各類(lèi)問(wèn)題,提高開(kāi)發(fā)效率,對(duì)接口做統(tǒng)一管理,同時(shí)也能為后續(xù)的迭代維護(hù)提供更便捷的方式。丁香園也將努力持續(xù)的做技術(shù)輸出產(chǎn)品輸出,為開(kāi)源社區(qū)做出自己的一份力量。 API Mocker 先貼上項(xiàng)目地址:DXY-F2E/api-mocker 隨著web發(fā)展,前后端分離的演進(jìn),網(wǎng)頁(yè)的交互變的越來(lái)越復(fù)雜。在項(xiàng)目開(kāi)發(fā)過(guò)程中,前后端并行開(kāi)發(fā)時(shí),在涉及到接口的部分,總是...
摘要:當(dāng)然需要的工具不只有這些,其他的一些可選工具還有文件壓縮壓縮時(shí)用到的文件重命名檢查一般編輯器自帶校驗(yàn)提示工具等等,具體根據(jù)項(xiàng)目需要安裝。 gulp 前端自動(dòng)化構(gòu)建工具 需要配置nodejs環(huán)境, 利用npm安裝全局gulp,安裝后可以輸入gulp指令。 npm install gulp -g 創(chuàng)建項(xiàng)目目錄、初始化npm包、gulp npm init gulp init 下載gul...
閱讀 2932·2021-07-30 15:30
閱讀 628·2019-08-30 15:55
閱讀 1693·2019-08-26 17:04
閱讀 723·2019-08-26 11:36
閱讀 2197·2019-08-26 10:58
閱讀 3649·2019-08-23 14:34
閱讀 1633·2019-08-22 18:48
閱讀 2614·2019-08-21 17:51