Deprecated: 已使用第三方mock-server花履,此DIY的方式就不用了挚赊,算作是一次學(xué)習(xí)吧。
某些功能開發(fā)時(以及后續(xù)維護時)嚴(yán)重依賴api返回的數(shù)據(jù)荠割。不但要求數(shù)據(jù)呈現(xiàn)某特定狀態(tài)旺矾,特別是當(dāng)前開發(fā)功能要修改數(shù)據(jù)時夺克,費勁巴拉弄好的數(shù)據(jù),點一下按鈕柬帕,就耗光了。還得再來一次……大費周章陷寝。于是其馏,需要一個“樁數(shù)據(jù)”。(此數(shù)據(jù)不是真正從api請求來叛复,而是自己在“偷偷”在本地提供的)。有個強大的json-server致扯,據(jù)考察只支持REST API,不適宜鲤看。故自己簡單實現(xiàn)了一個機制耍群,可以實現(xiàn)樁數(shù)據(jù)
用法
- 將你所請求api的某次“合意”的數(shù)據(jù)保存成js文件,形如:
// 將某次請求的結(jié)果以key-value的形式賦給window.stub
// http://api.domain.com/index.php?r=demand/index&demand_id=1
window.stub = {
"demand/index": // 此key即為api中的r參數(shù)
{
succ: "1",
name: "a",
tel: "123"
...
}
}
- 在src/iscripts/global/test/stub/stub.js中 @@include此js
注:stub.js中只能有一個@@include蹈垢,其他都注釋掉。否則溉瓶,后邊的會覆蓋掉前面的谤民,給window.stub賦值 - gulp --stub=1
- 開始調(diào)試吧
原理:
將統(tǒng)一封裝的jquery的ajax方法調(diào)用前,加了一個判斷张足。如果所請求的接口有stub數(shù)據(jù),則應(yīng)用改數(shù)據(jù)(而不去服務(wù)端請求了)哼绑。
故岩馍,此方法僅能一定程度上模擬真實情況抖韩,重在模擬請求數(shù)據(jù),但不能寫數(shù)據(jù)
說明
- stub并不一定能對你初次開發(fā)時有多大用處赦肋,只對后續(xù)你再想使用此數(shù)據(jù)時用處比較大励稳。尤其你開發(fā)的功能會“改變數(shù)據(jù)”時囱井,此方法可以省去數(shù)據(jù)過快被消耗掉
- 如果開發(fā)的功能需要順次請求多個接口(注意是不同接口哦),可以給stub賦多個key-value庞呕,參考例子:data/demand_index/pay.js
- 另,現(xiàn)在已經(jīng)有幾個數(shù)據(jù)住练,或可用到;慢慢積攢吧
- 此功能開發(fā)的比較“毛坯房”亏吝,有不方便的地方盏混,可以再視情況增強一些。