mock.js模擬數(shù)據(jù)實(shí)現(xiàn)前后端分離
眾所周知,在日常開發(fā)中,前后端分離是最常見的開發(fā)模式,前端完成頁面渲染,后端提供接口數(shù)據(jù)。
但是起初項(xiàng)目剛開始,后端還沒有寫好接口數(shù)據(jù),前端要構(gòu)建頁面,還得考慮結(jié)構(gòu)以及后期真實(shí)數(shù)據(jù)的問題。
所以前后端統(tǒng)一接口數(shù)據(jù)和格式是必要的。
而當(dāng)統(tǒng)一好接口數(shù)據(jù)和格式后,前端就可以通過mock.js來模擬對(duì)應(yīng)格式的數(shù)據(jù),以此來完成頁面的搭建,當(dāng)后端完成接口和數(shù)據(jù)后,因?yàn)榍捌跀?shù)據(jù)格式都是規(guī)范好的,所以只要去除掉mock.js那部分即可,而不需要再更改界面。
那么說了這么多,mock.js到底是什么?
根據(jù)官網(wǎng)簡(jiǎn)單的解釋來說,就是:攔截ajax請(qǐng)求,模擬返回自定義格式的數(shù)據(jù),實(shí)現(xiàn)前后端分離。
說的這么厲害,那么我們來看看具體用法。
這次先看看在原生中怎么使用,下次介紹在vue中的使用。
普通不涉及框架的項(xiàng)目中安裝mock.js推薦使用bower安裝:
npm install bower -g
bower install mockjs --save
具體使用:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>mock js-demo1</title>
</head>
<body>
</body>
</html>
<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>
<script src="js/ajax.js"></script>
<script type="text/javascript" src="./bower_components/mockjs/dist/mock.js"></script>
<script>
Mock.mock('http://api.com', {
'users|5': [ {
'name': '@cname', //中文名稱
'age|1-100': 100, //100以內(nèi)隨機(jī)整數(shù)
'birthday': '@date("yyyy-MM-dd")', //日期
'city': '@city(true)' //中國(guó)城市
}]
});
// //JQuery方式
$.ajax({
url: 'http://api.com',
dataType: 'json'
}).done(function (data, status, xhr) {
console.log(
JSON.stringify(data, null, 4)
)
});
//原生ajax方式
function ajax(method, url, params, isAsync) {
//創(chuàng)建對(duì)象
xhr = new XMLHttpRequest();
//設(shè)置請(qǐng)求參數(shù)
xhr.open(method, url, isAsync);
//回調(diào)函數(shù)
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);
}
}
//發(fā)送請(qǐng)求
xhr.send();
}
ajax('get','http://api.com','', true);
</script>
這里我引入了通過bower下載的mock.js,然后給mockjs給定一個(gè)請(qǐng)求地址(如果有可以給定真實(shí)地址,沒有可以寫個(gè)假地址,只要和ajax請(qǐng)求地址一致即可),然后在mock的第二個(gè)參數(shù)中定義了數(shù)據(jù)格式,是個(gè)隨機(jī)五位的數(shù)組對(duì)象,包括姓名、年齡、生日、地址
然后通過ajax正常請(qǐng)求地址,然后返回值就會(huì)收到mock.js的攔截,而返回我們自定義格式的數(shù)據(jù),而不是后端數(shù)據(jù)
這樣在項(xiàng)目初期,后端沒有數(shù)據(jù)的情況下,我們就可以通過模擬數(shù)據(jù)完成頁面功能的開發(fā)。
當(dāng)后端數(shù)據(jù)完成后,我們只要?jiǎng)h除mock.js部分即可(如果前期接口地址是假的,改一下接口地址即可)
這里推薦把mock.js部分抽離到公共的文件中,引入即可,這樣后期可維護(hù)性強(qiáng),只要不引入mock部分即可,而不用來回刪代碼。
返回?cái)?shù)據(jù)效果:

具體的請(qǐng)求格式官網(wǎng)寫的很清楚,這里就不做贅述了。
附上官網(wǎng)的地址:
好了,這次就介紹到這里,大家去試試吧。
如有問題,請(qǐng)指出,接受批評(píng)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
disable-devtool禁用web開發(fā)者工具保護(hù)網(wǎng)頁源碼
這篇文章主要為大家介紹了disable-devtool禁用web開發(fā)者工具保護(hù)網(wǎng)頁源碼的使用,防止源碼泄露保護(hù)網(wǎng)站源碼的最佳解決方案,一行代碼就可以搞定,有需要的可以學(xué)習(xí)參考下2023-11-11
javascript日期驗(yàn)證之輸入日期大于等于當(dāng)前日期
這篇文章主要介紹了javascript日期驗(yàn)證之輸入日期大于等于當(dāng)前日期,需要的朋友可以參考下2015-12-12
JS+css 圖片自動(dòng)縮放自適應(yīng)大小
編輯器上傳的圖片太大了,把FF和IE撐的走形,所以希望圖片在某些頁面里要有固定大小,如果需要某個(gè)范圍,用getElementByname來設(shè)定,也是一個(gè)道理:2013-08-08
Bootstrap項(xiàng)目實(shí)戰(zhàn)之首頁內(nèi)容介紹(全)
本文分為兩部分介紹Bootstrap首頁內(nèi)容介紹的實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-04-04
js實(shí)現(xiàn)倒計(jì)時(shí)及時(shí)間對(duì)象
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)倒計(jì)時(shí)效果及時(shí)間對(duì)象,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Javascript中toFixed計(jì)算錯(cuò)誤(依賴銀行家舍入法的缺陷)解決方法
這篇文章主要介紹了Javascript中toFixed計(jì)算錯(cuò)誤(依賴銀行家舍入法的缺陷)解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-08-08

