前端之模擬數據 - HackerVirus - 博客園

閱讀目錄

  • 玩轉前端之模擬數據

回到目錄

玩轉前端之模擬數據

?

博客園主頁:http://www.cnblogs.com/handoing/

是否還在為前端模擬數據頭疼?

是否還在為后端返回數據格式較多內心煩躁?

是否還想吸一支煙壓壓精?

看下去吧,這里比心理醫生還管用。。。

?

1.滿地拉屎版

復制代碼

復制代碼

function fetchUserList() {}var isDev = true;var data = {"status": 3,"message": "hello world","string": "★★★","number": 69,"boolean": true,"object": {"110000": "北京市","120000": "天津市","130000": "黑龍江省"},"array": [{"name": "Hello"},{"name": "Mock.js"},{"name": "!"},{"name": "Hello"},{"name": "Mock.js"},{"name": "!"}],"regexp": "6288712123-","time": "2014-01-16 21:21:22","color": "rgba(121, 242, 135, 0.94)","word": "jztuqwmur","text": "而風氣究及。","name": "崔杰","url": "news://imkpjsnq.ev/dhthtrgqy"
};if (isDev) {fetchUserList(data);
} else {$.ajax({url: '/list',type: 'GET',dataType: 'json',success: function(data) {fetchUserList(data);}});
}

復制代碼

復制代碼

這段代碼很好理解,如果你看不懂就不要往下看了,洗個澡睡覺休息吧!

有人會問了,看似很有條理的代碼為什么叫滿地拉屎呢?

讓我告訴你這個data變量就是一坨屎。。。

在開發的時候我們會定義一個data來模擬后端返回的數據來進行下一步操作,如果這個data很長占滿了整個屏幕,那你敲代碼的時候上下翻來翻去是不是覺得很累。

這是其次,再一個就是當你聯調把isDev改成了false的時候,有沒有想到這個data有多孤單,自己在內存里游離,占著茅坑不拉屎。。。

那么你會說干脆把data和多余的判斷代碼刪掉吧,我覺得這倒是可以,但是如果開發的程序前后端交互較多,你會覺得刪起來挺不爽的,萬一腦血栓犯了把有用的代碼刪掉了怎么辦。。。

?

2.擦屁股高階版

開發目錄下創建一個json文件

?

添加json數據

復制代碼

復制代碼

{"status": 3,"message": "hello world","string": "★★★","number": 69,"boolean": true,"object": {"110000": "北京市","120000": "天津市","130000": "黑龍江省"},"array": [{"name": "Hello"},{"name": "Mock.js"},{"name": "!"},{"name": "Hello"},{"name": "Mock.js"},{"name": "!"}],"regexp": "6288712123-","time": "2014-01-16 21:21:22","color": "rgba(121, 242, 135, 0.94)","word": "jztuqwmur","text": "而風氣究及。","name": "崔杰","url": "news://imkpjsnq.ev/dhthtrgqy"
}

復制代碼

復制代碼

ajax請求路徑填寫該文件地址

復制代碼

復制代碼

$.ajax({url: 'data/list.json',type: 'GET',dataType: 'json',success: function(data) {console.log(data);}
});

復制代碼

復制代碼

這樣聯調的時候只要把url改掉即可,看似很不錯了,但是這個與滿地拉屎版有一個共同點,數據不夠靈活。

當你獲取的數據有狀態判斷的話,怎么辦,例如status這個key,你每次都得改這個value來對狀態進行區分,好煩啊word哥!

?

3.強行裝逼版

使用mock.js吧!一個模擬數據和編寫自動化測試的庫,目前github上1684個星也算不錯了。

github:https://github.com/nuysoft/Mock

主頁:?http://mockjs.com/

中文的,文檔通俗易懂,自己去看吧。。。

例子:

開發目錄下創建一個js文件存放mock代碼

html引入mock.js和data/list.js文件

復制代碼

復制代碼

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title></title><script type="text/javascript" src="./jquery.js"></script><script type="text/javascript" src="./mock.js"></script><script type="text/javascript" src="./data/list.js"></script><script type="text/javascript" src="./main.js"></script>
</head>
<body></body>
</html>

復制代碼

復制代碼

編寫main.js

復制代碼

復制代碼

$.ajax({url: '/list',type: 'GET',dataType: 'json',success: function(data) {fetchUserList(data);}
});

復制代碼

復制代碼

編寫data/list.js,模擬數據都寫在這里,便于維護。

復制代碼

復制代碼

Mock.mock('/list', {"status|0-5": 0,"message": "hello world","string|1-10": "★","number|1-100": 100,"boolean|1-2": true,"object|2-4": {"110000": "北京市","120000": "天津市","130000": "黑龍江省","140000": "四川省"},"array|1-10": [{"name|+1": ["Hello","Mock.js","!"]}],"regexp|1-5": /\d{5,10}\-/,"time": '@datetime',"color": '@rgba',"word": '@word',"text": '@csentence(5)',"name": '@cname',"url": '@url'
});

復制代碼

復制代碼

當前后端聯調的時候只需要把mock.js和data/list.js刪掉就好了,main.js里的代碼一點都不用動噢兄弟們!這他媽多爽啊!!!

來讓我們秀秀數據吧

復制代碼

復制代碼

{"status": 4,"message": "hello world","string": "★","number": 98,"boolean": false,"object": {"110000": "北京市","120000": "天津市","130000": "黑龍江省"},"array": [{"name": "Hello"},{"name": "Mock.js"},{"name": "!"},{"name": "Hello"},{"name": "Mock.js"},{"name": "!"},{"name": "Hello"},{"name": "Mock.js"},{"name": "!"}],"regexp": "241330-30881228-2632266897-","time": "2009-06-19 01:55:07","color": "rgba(242, 121, 165, 0.96)","word": "bry","text": "接看九統利。","name": "謝杰","url": "news://vykj.ag/frvlwkf"
}

復制代碼

復制代碼

復制代碼

復制代碼

{"status": 1,"message": "hello world","string": "★★★★★★★★★★","number": 86,"boolean": true,"object": {"120000": "天津市","130000": "黑龍江省"},"array": [{"name": "Hello"},{"name": "Mock.js"}],"regexp": "083728849-3321101-067657-","time": "2013-02-24 17:29:08","color": "rgba(158, 242, 121, 0.83)","word": "smutjy","text": "中往列軍部。","name": "田勇","url": "rlogin://mmpooew.bw/kcuijlnk"
}

復制代碼

復制代碼

注:mock的第一個參數必須要與ajax請求的路徑相同,并且get和post請求都可以進行匹配,數據足夠靈活,應該能模擬99.9999%的情況了。

不過在我看來這個mock.js還不夠完美,其有兩個缺陷:

1.無法匹配帶參數的ajax請求。

2.兼容性不夠強(這個不重要,因為我們只會在開發環境中用到)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248963.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248963.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248963.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode No.146 ****

運用你所掌握的數據結構&#xff0c;設計和實現一個 LRU (最近最少使用) 緩存機制。它應該支持以下操作&#xff1a; 獲取數據 get 和 寫入數據 put 。 獲取數據 get(key) - 如果密鑰 (key) 存在于緩存中&#xff0c;則獲取密鑰的值&#xff08;總是正數&#xff09;&#xff…

三元運算符運算(Day02)

三元運算符運算(Day02) 運算符&#xff1a;用來對常量或者變量連接的符號&#xff0c;稱為運算符。表達式&#xff1a;用運算符連接起來的整個式子成為表達式。比如&#xff1a;a10,1020運算符有以下五種&#xff1a;1、算術運算符2、賦值運算符3、關系運算符4、邏輯運算符5、三…

JS正則表達式驗證數字非常全 - 吾心無所 - 博客園

JS正則表達式驗證數字非常全 Js代碼 <script type"text/javascript"> function SubmitCk() { var reg /^([a-zA-Z0-9][_|\_|\.]?)*[a-zA-Z0-9]([a-zA-Z0-9][_|\_|\.]?)*[a-zA-Z0-9]\.[a-zA-Z]{2,3}$/; if (!reg.test($("#txtEmail").val())) {…

datagrid 的標題的內容不對應整齊

$(document).ready(function(){ var column "[[" "{title:工號,field:grantorCode,sortable:true,hidden:true,width:fixWidth(0)}," "{title:外出告知人,field:grantor,sortable:true,width:fixWidth(0.15)}," "{title:開始時間…

laravel 分頁

2.1 基于查詢構建器分頁 有多種方式實現分頁&#xff0c;最簡單的方式就是使用查詢構建器或Eloquent模型的paginate方法。該方法基于當前用戶查看頁自動設置合適的偏移&#xff08;offset&#xff09;和限制&#xff08;limit&#xff09;。默認情況下&#xff0c;當前頁通過HT…

Postfix常用命令和郵件隊列管理(queue)

本文主要介紹一下postfix的常用命令及郵件隊列的管理: Postfix有以下四種郵件隊列&#xff0c;均由管理隊列的進程統一進行管理&#xff1a; maildrop&#xff1a;本地郵件放置在maildrop中&#xff0c;同時也被拷貝到incoming中。 incoming&#xff1a;放置正在到達隊列或管理…

異步加載js文件并執行js方法:實現異步處理網頁的復雜效果

異步加載js文件并執行js方法&#xff1a;實現異步處理網頁的復雜效果 有這么一個場景&#xff0c;當你的網頁頁面效果過多就會造成了打開頁面的速度變得緩慢&#xff0c;長時間處于加載的狀態&#xff0c;這樣的效果通常會讓用戶感到不友好&#xff0c;通常的處理方法是先…

1.java的基礎和數據類型

一.學習要求1.聽課一定要全神貫注2.課堂筆記&#xff0c;一定要自己總結&#xff0c;而且要有很嚴謹的邏輯關系。提綱很重要3.作業不折不扣的完成&#xff0c;并且多完成4.階段項目一定要獨立完成5.每天早上由一位同學來進行早分享&#xff0c;內容可以是昨天或者明天的學習內容…

JavaScript DOM操作 提高篇

做為一個web前端&#xff0c;處理和了解瀏覽器差異一個重要問題.下面將介紹本人在工作中的一些筆記總結&#xff0c;先介紹沒有使用js庫的情況。 1.  setAttribute方法設置元素類名 &#xff1a; 在jQuery中&#xff0c;直接使用attr()方法即可&#xff0c;可在原生的JS中 e…

《算法競賽進階指南》0.5排序

103. 電影 莫斯科正在舉辦一個大型國際會議&#xff0c;有n個來自不同國家的科學家參會。 每個科學家都只懂得一種語言。 為了方便起見&#xff0c;我們把世界上的所有語言用1到109之間的整數編號。 在會議結束后&#xff0c;所有的科學家決定一起去看場電影放松一下。 他們去的…

Spring Cloud Gateway(五):路由定位器 RouteLocator

本文基于 spring cloud gateway 2.0.1 1、簡介 直接 獲取 路 由 的 方法 是 通過 RouteLocator 接口 獲取。 同樣&#xff0c; 該 頂 級 接口 有多 個 實現 類&#xff0c; RouteLocator 路由定位器&#xff0c;顧名思義就是用來獲取路由的方法。該路由定位器為頂級接口有多個實…

CommonJS,AMD,CMD區別 - 鄭星陽 - ITeye博客

CommonJS&#xff0c;AMD&#xff0c;CMD區別 博客分類&#xff1a; seajs和requirejs JavaScript zccst轉載 學得比較暈&#xff0c;再次看commonjs&#xff0c;amd, cmd時好像還是沒完全弄清楚&#xff0c;今天再整理一下&#xff1a; commonjs是用在服務器端的&#xff…

739. Daily Temperatures

根據每日 氣溫 列表&#xff0c;請重新生成一個列表&#xff0c;對應位置的輸入是你需要再等待多久溫度才會升高的天數。如果之后都不會升高&#xff0c;請輸入 0 來代替。 例如&#xff0c;給定一個列表 temperatures [73, 74, 75, 71, 69, 72, 76, 73]&#xff0c;你的輸出應…

【NOIP2018】DAY2T2——填數游戲(輪廓線狀壓的dp?搜索打表)

描述 小 D 特別喜歡玩游戲。這一天&#xff0c;他在玩一款填數游戲。 這個填數游戲的棋盤是一個n m的矩形表格。玩家需要在表格的每個格子中填入一個數字&#xff08;數字 0 或者數字 1&#xff09;&#xff0c;填數時需要滿足一些限制。 下面我們來具體描述這些限制。 為了方…

Mysql中遇到的錯誤

Caused by: java.sql.SQLException: Unknown system variable ‘tx_isolation’ 這種錯誤是因為數據庫版本新的但是mysql的jar包是舊的&#xff0c;所以導入最新的mysqljar包 注意實體類和數據庫字段的映射關系&#xff0c;實體類中使用駝峰式的命名規則&#xff0c;大寫的字母…

Express 入門之Router - worldtree_keeper的專欄 - CSDN博客

要了解Router我們需要先知道到Application&#xff0c;首先&#xff0c;每一個express實例本身內部就內建了router&#xff0c;所以我們先從簡單的下手&#xff0c;先使用application&#xff1b;另外這里我們只選擇get方法&#xff0c;作為我們Router.Method, 之所以使用get是…

rest測試定義

1.為什么要做接口測試&#xff1a; 1.因為很多系統關聯都是基于接口實現的&#xff0c;接口測試可以將系統復雜的系統關聯進行簡化 2.接口工程比較單一&#xff0c;能夠比較好的進行測試覆蓋&#xff0c;也相對容易實現自動化持續集成 3.接口相對于界面功能 &#xff0c;會更底…

團隊開發進度報告9

&#xff08;1&#xff09;站立會議 &#xff08;2&#xff09;任務面板 &#xff08;3&#xff09;具體內容 昨天&#xff1a;完成了界面控件按鈕的設置問題&#xff1a;PHP數據處理&#xff0c;如何實現在線數據交互問題今天&#xff1a;hbuilder后臺環境搭建 轉載于:https:/…

nodejs+express整合kindEditor實現圖片上傳 - 木子豐咪咕晶 - 開源中國

kindEditor官網上中提供了ASP,ASP.NET,JSP相關的整合應用,http://kindeditor.net/docs/upload.html可以參照實現nodejs的整合,發現實用nodejs更簡單 環境: unbuntu 14.10 nodejs 0.10.35 express 4.11.2 formidable 1.0.16 kindEditor 4.1.10 webStorm 8 1.通過IDE或終端創建…

基于springboot多模塊項目使用maven命令打成war包放到服務器上運行的問題

首先&#xff0c;大家看到這個問題&#xff0c;可能并不陌生&#xff0c;而且腦子里第一映像就是使用mava中的clear package 或者 clear install進行打包&#xff0c;然后在項目中的target文件夾下面找到xxx.war&#xff0c;將這個war包放到外置的tomcat服務器下的webapps下面&…