mockjs 的使用(生成隨機數(shù)據(jù)婚度,攔截 Ajax 請求)

介紹

mockjs 是一個強大的東西,根據(jù)官網上的一句話來描述:生成隨機數(shù)據(jù),攔截 Ajax 請求

具體的作用有:

  • 基于 數(shù)據(jù)模板 生成模擬數(shù)據(jù)
  • 基于 HTML模板 生成模擬數(shù)據(jù)
  • 攔截并模擬 ajax 請求

解決問題

開發(fā)過程中鼓蜒,后端還沒有寫好接口,前端只能擱置任務或者手寫模擬數(shù)據(jù)征字,然而這種數(shù)據(jù)往往有幾個特點:

  • 真實性較低
  • 重復率過高
  • 數(shù)據(jù)格式單一
  • 以犧牲時間為代價改善以上幾點

在開發(fā)過程中都弹,花費大量的時間去寫模擬數(shù)據(jù)是得不償失的,這里 mockjs 就體現(xiàn)了它強大的地方匙姜。

它可以(官網上寫的畅厢。。氮昧。)

  • 讓前端攻城師獨立于后端進行開發(fā)
  • 不需要修改既有代碼框杜,就可以攔截 Ajax 請求,返回模擬的響應數(shù)據(jù)
  • 支持生成隨機的文本袖肥、數(shù)字咪辱、布爾值、日期昭伸、郵箱梧乘、鏈接、圖片庐杨、顏色等
  • 通過隨機數(shù)據(jù)选调,模擬各種場景
  • 符合直覺的接口
  • 支持擴展更多數(shù)據(jù)類型,支持自定義函數(shù)和正則

項目中使用

本篇文章介紹的是 mockjs 結合 gulp 的實例灵份,其中使用了 browser-sync 作為靜態(tài)服務器仁堪,主要的 js 文件有 gulpfile.js 與 mock.js。

/**
 * gulpfile.js
 */

// 這里省略了其他插件的定義
var browserSync = require('browser-sync').create();
var mock = require('./mock/mock.js');

gulp.task('server', ['build', 'watch'], function () {
    browserSync.init({
        server: {
            middleware: mock.api() // 這里配置中間件
        }
    })
})

/**
 * mock.js
 */


var Mock = require('mockjs');
var url = require('url');

exports.api = function () {
    return [
        {
            route: '/api',
            handle: function (req, res, next) {

                var urlObj = url.parse(req.url, true),
                    method = req.method;
                res.setHeader('Content-Type', 'application/json');
                switch (urlObj.pathname) {
                    case '/data':
                        if (method === "GET") {
                            res.end(JSON.stringify(
                                {
                                    "status": "GET data"
                                }
                            ));
                            return;
                        } else if (method === "POST") {
                            res.end(JSON.stringify(
                                {
                                    "status": "POST data"
                                }
                            ));
                            return;
                        } else {
                            res.end(JSON.stringify(
                                {
                                    "status": "error"
                                }
                            ));
                            return;
                        }
                    default:
                        res.end(JSON.stringify(
                                Mock.mock(
                                    {
                                        "items|6": [{
                                            'title': '@cword(6)',
                                            'url': "@url()",
                                            'name': "@cname(2,3)",
                                            'id|0-200': 1,
                                            'percent': /\d{1,2}[\.]\d{1}[%]{1}/
                                        }]
                                    }
                                )
                        ));
                }
            }
        }
    ]
};

這里我把 mock.js 里面寫的很長填渠,目的是為了明確不同的請求地址與方法所對應的情況弦聂,其中 default 內的寫法就是 mock 中最大的亮點了鸟辅,具體的寫法看這里

最后就可以去使用 ajax 了:



$.ajax({
    url: "/api/data",
    type: "POST",
    data: {
        test: 1
    },
    success: function(data){
        console.log(data);
    },
    error: function(err){
        console.log(err);
     }
})

mockjs 就會根據(jù)請求的地址進行攔截了莺葫。

返回的隨機數(shù)據(jù):

{
    "items": [
        {
            "title": "問市制具飛再",
            "url": "mailto://jyvzt.pt/ihxiwr",
            "name": "易敏",
            "id": 95,
            "percent": "7.0%"
        },
        {
            "title": "百老三行如斗",
            "url": "rlogin://ndgwuqcv.eh/eorgshc",
            "name": "錢磊",
            "id": 106,
            "percent": "0.5%"
        },
        {
            "title": "教林技我組增",
            "url": "nntp://djrenaicjt.es/xwnpkwuy",
            "name": "胡濤",
            "id": 154,
            "percent": "80.5%"
        },
        {
            "title": "切什被五多情",
            "url": "telnet://jqnmjot.nl/ouau",
            "name": "田麗",
            "id": 13,
            "percent": "76.2%"
        },
        {
            "title": "問低連且三了",
            "url": "nntp://hvhqclj.coop/bnfrg",
            "name": "傅杰",
            "id": 103,
            "percent": "63.8%"
        },
        {
            "title": "計與此元已給",
            "url": "nntp://pwjlpbyg.cu/pmfgy",
            "name": "黎秀蘭",
            "id": 46,
            "percent": "83.1%"
        }
    ]
}

結尾

上面就是 gulp + mockjs 的簡單使用匪凉,更多的亮點會慢慢更新。:)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末捺檬,一起剝皮案震驚了整個濱河市再层,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堡纬,老刑警劉巖聂受,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異烤镐,居然都是意外死亡蛋济,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門炮叶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碗旅,“玉大人,你說我怎么就攤上這事悴灵】秆浚” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵积瞒,是天一觀的道長。 經常有香客問我登下,道長茫孔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任被芳,我火速辦了婚禮缰贝,結果婚禮上,老公的妹妹穿的比我還像新娘畔濒。我一直安慰自己剩晴,他們只是感情好,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布侵状。 她就那樣靜靜地躺著赞弥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趣兄。 梳的紋絲不亂的頭發(fā)上绽左,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音艇潭,去河邊找鬼拼窥。 笑死戏蔑,一個胖子當著我的面吹牛,可吹牛的內容都是我干的鲁纠。 我是一名探鬼主播总棵,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼改含!你這毒婦竟也來了彻舰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤候味,失蹤者是張志新(化名)和其女友劉穎刃唤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體白群,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡尚胞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了帜慢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笼裳。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖粱玲,靈堂內的尸體忽然破棺而出躬柬,到底是詐尸還是另有隱情,我是刑警寧澤抽减,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布允青,位于F島的核電站,受9級特大地震影響卵沉,放射性物質發(fā)生泄漏颠锉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一史汗、第九天 我趴在偏房一處隱蔽的房頂上張望琼掠。 院中可真熱鬧,春花似錦停撞、人聲如沸瓷蛙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艰猬。三九已至,卻和暖如春副硅,著一層夾襖步出監(jiān)牢的瞬間姥宝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工恐疲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腊满,地道東北人套么。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓镜遣,卻偏偏與公主長得像盈咳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子逼肯,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容