掌握Mock擺脫后端同學的束縛

文章目錄

    • 前言
    • Mock概述
    • mock.js安裝
    • Mock規范
    • Mock的使用
    • 總結

在這里插入圖片描述

前言

當下采用前后端分離模式開發Web應用已經成為氣候,在開發階段有一個不成文的規定則是 項目開發后端先行 但是作為前端開發工程師的我們,難道在搭建完頁面后只能等待后端的接口么?這樣的話我們則完全被后端開發限制住了。

但其實我們只需要同后端同學商議決定好接口返回的數據格式我們就可以并行開發。很多同學則在開發中則會使用定義變量寫好數據模擬接口返回的數據進行前端渲染工作;完全是可以的,但是有沒有更加專業的手段或者技術呢?
當然有,那就是我們的 Mock 下面讓我們來看一下前端人最后的倔強吧!

Mock概述

在這里插入圖片描述
mock:模仿的;虛假的;不誠實的,這是mock作為單詞的翻譯,當然他的用途也是如同他的翻譯一樣就是模擬接口、數據其實mock的出現就是前后端分離后為前端不受制于后端同學的束縛而出現的,在實際開發中后端同學有自己的開發節奏,不能如我們前端所想幾分鐘出一個接口,可能我們索要接口的時候后端同學還在構思如何建表?

而mock則避免了我們對后端同學催促的尷尬,他就可以完成模擬接口,讓前后端并行開發,提高我們的開發效率,不被后端拖節奏。

mock即mock.js,他的流程就是 前端發送請求到后端 =》mock.js攔截請求=》并返回模擬數據給前端。至于數據我們事先只需要與后端同學定義好格式即可,mock.js會通過法則為我們生成比較貼近真實數據的模擬數據。看到這里你是不是對mock屬實有點心動了呢?下面就讓我們來看一下mock.js運用到項目中。

mock.js安裝

我們可以看到官網上提供了很多關于不同前端項目的安裝(有興趣的同學可以看一下,如果你和博主一樣想在Vue項目中去使用的話那么就跳過下面這張圖片我們看下面步驟
在這里插入圖片描述
下面就以Vue為例子來為大家演示

1、創建vue項目
我們利用vue腳手架創建一個項目,不會訪問這篇文章https://blog.csdn.net/JHXL_/article/details/107631123
在這里插入圖片描述
2、項目中安裝mock.js和axios

因為我們的mock是攔截請求,所以我們需要安裝axios進行請求,當然使用原生的ajax也是可以的!

npm i mockjs -D
npm i axios

在這里插入圖片描述
3、安裝成功后我們運行項目

npm run serve

Mock規范

說明:本小節依照官網,所以很多規范大家看不透徹沒有關系,我們可以跳過此小節先看下節的mock的使用

Mock.js 的語法規范包括兩部分:

  1. 數據模板定義規范(Data Template Definition,DTD)
    數據模板中的每個屬性由 3 部分構成:屬性名、生成規則、屬性值:

    // 屬性名   name
    // 生成規則 rule
    // 屬性值   value
    'name|rule': value
    

    注意:
    屬性名 和 生成規則 之間用豎線 | 分隔。
    生成規則 是可選的。
    生成規則 有 7 種格式:
    ‘name|min-max’: value
    ‘name|count’: value
    ‘name|min-max.dmin-dmax’: value
    ‘name|min-max.dcount’: value
    ‘name|count.dmin-dmax’: value
    ‘name|count.dcount’: value
    ‘name|+step’: value
    生成規則 的 含義 需要依賴 屬性值的類型 才能確定。
    屬性值 中可以含有 @占位符。
    屬性值 還指定了最終值的初始值和類型。

  2. 數據占位符定義規范(Data Placeholder Definition,DPD)
    占位符 只是在屬性值字符串中占個位置,并不出現在最終的屬性值中。
    占位符 的格式為:

    @占位符
    @占位符(參數 [, 參數])
    

    注意:
    用 @ 來標識其后的字符串是 占位符。
    占位符 引用的是 Mock.Random 中的方法。
    通過 Mock.Random.extend() 來擴展自定義占位符。
    占位符 也可以引用 數據模板 中的屬性。
    占位符 會優先引用 數據模板 中的屬性。
    占位符 支持 相對路徑 和 絕對路徑。

    Mock.mock({name: {first: '@FIRST',middle: '@FIRST',last: '@LAST',full: '@first @middle @last'}
    })
    // =>
    {"name": {"first": "Charles","middle": "Brenda","last": "Lopez","full": "Charles Brenda Lopez"}
    }
    

上面這些呢只是簡單的介紹了一下mock的規范,但其實他是有很多法則的我們可以到官方來去看看,掌握這些法則后我們能夠模擬的數據就會更加真實更加繁瑣的數據都可以輕松生成!
https://github.com/nuysoft/Mock/wiki/Syntax-Specification

Mock的使用

1、創建mock文件

  • 在src文件夾下面創建mock文件夾
  • 在mock文件夾中創建json文件夾
  • 在mock文件夾中創建index.js文件

在這里插入圖片描述
2、在mock下面的index.js中引入mock并創建mock響應內容

// 引入 mock.js
const Mock = require('mockjs')
//Mock.mock  接口,請求方式,返回數據(數據就是json文件夾中的文件自行添加)
Mock.mock('/user/list', 'get', require('./json/userList'))

說明:Mock.mock()
此方法就是匹配我們的請求進行攔截然后返回模擬數據,有如下幾種形式

Mock.mock( rurl, template )

記錄數據模板。當攔截到匹配 rurl 的 Ajax 請求時,將根據數據模板 template 生成模擬數據,并作為響應數據返回。

Mock.mock( rurl, function( options ) )

記錄用于生成響應數據的函數。當攔截到匹配 rurl 的 Ajax 請求時,函數 function(options) 將被執行,并把執行結果作為響應數據返回。

Mock.mock( rurl, rtype, template )

記錄數據模板。當攔截到匹配 rurl 和 rtype 的 Ajax 請求時,將根據數據模板 template 生成模擬數據,并作為響應數據返回。

Mock.mock( rurl, rtype, function( options ) )

記錄用于生成響應數據的函數。當攔截到匹配 rurl 和 rtype 的 Ajax 請求時,函數 function(options) 將被執行,并把執行結果作為響應數據返回。

當然我們的Mock還有好幾種方法,更多方法可以去官網了解一下哦!
在這里插入圖片描述

3、我們在mock文件夾下面的json文件夾下創建我們引用的userList.json
在這里插入圖片描述

{"status": 0,"data|10": [{"id|+1": 1001,"company": "10001","username": "ceshi1","age": 25}],"msg": ""
}

4、接著我們就去我們的頁面中測試請求
找到我們頁面,因為我們是新建的項目 所以我們刪除頁面中的東西 換成清爽的內容
在這里插入圖片描述
在這里插入圖片描述
然后我們引入axios并注冊事件就可以發送請求了

<template><div><div @click="btnClick" class="btn">這是測試</div></div>
</template><script>
import axios from "axios";export default {data() {return {};},methods: {async btnClick() {const res = await axios.get("/user/list");console.log(res.data.data);},},
};
</script><style>
</style>

然后我們點擊發現還是請求了接口這是為什么呢?原來是我們前面少了一個步驟,那就是我們需要在main中去引用我們的mock
在這里插入圖片描述
再次嘗試成功
在這里插入圖片描述

總結

通過上面的使用可以看到,我們前端發送的請求只要被我們的 Mock.mock 方法中的url匹配上就會被mock攔截,我們可以自行驗證當我們使用mock并匹配上url后我們的network中是沒有請求了,mock會根據我們定義的此條url的法則去返回對應的數據,在實際開發中其實前端很多后期工作都是在調試通接口后根據返回的數據進行的,通過mock我們前端就不會過多的依賴后端接口,只要知道后端返回數據的格式我們自己就可以通過mock.js自己生成數據進行模擬接口,從而在接口調通前我們也可以自己進行數據渲染和調試工作;

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

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

相關文章

戶外鞋簡介

. 單論品牌&#xff08;主要以登山鞋及徙步鞋為主&#xff09;&#xff1a; 高級品牌&#xff1a;SCARPA、ASOLO、MONTRAIL、ZAMBERLAN、vasque、Lowa、La Sportiva 價格都較高&#xff0c;單價都在千元以上&#xff0c;品質一流&#xff0c;做工精細。 中檔品牌&#xff1a;Tr…

Vue技能樹上線啦

前言 前端現在越來越多樣化&#xff0c;語言眾多&#xff0c;大家使用的框架也比較雜&#xff0c;在廣泛的前端技術棧面前我唯愛Vue&#xff08;僅代表個人觀點勿噴小伙伴們&#xff09;可能很多人覺得我是因為簡單&#xff0c;其實并不然&#xff0c;我嘗試過很多框架&#x…

ES6的新特性(8)——數組的擴展

數組的擴展 擴展運算符 含義 擴展運算符&#xff08;spread&#xff09;是三個點&#xff08;...&#xff09;。它好比 rest 參數的逆運算&#xff0c;將一個數組轉為用逗號分隔的參數序列。 console.log(...[1, 2, 3]) // 1 2 3console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5[…

《SpringMVC從入門到放肆》一、概述

一、SpringMVC概述 ViewServiceDaoDBSpring MVCinterfaceinterfaceMysqlimplsimplsSpringMVC也叫Spring web mvc&#xff0c;屬于表現層框架。SpringMVC是Spring框架的一部分&#xff0c;是在Spring3.0后發布的。 二、第一個SpringMVC程序功能描述&#xff1a;  用戶提交一個…

手握流量密碼,萬粉不是夢

前言 可能大家來到CSDN的目的初衷都是不一樣的&#xff0c;像我注冊CSDN的時候完全是為了解決自己項目中的各種問題&#xff0c;能夠有一個為我提供正確答案、正確解決方案的一個平臺&#xff0c;簡單的了解后我選擇CSDN&#xff0c;直到成為現在的創作者也說明我的選擇是對的…

秋季學期學習總結

轉載于:https://www.cnblogs.com/zx666/p/10408950.html

一文帶你了解React框架

前言 由于 React的設計思想極其獨特&#xff0c;屬于革命性創新&#xff0c;性能出眾&#xff0c;代碼邏輯卻非常簡單。所以&#xff0c;越來越多的人開始關注和使用&#xff0c;認為它可能是將來 Web 開發的主流工具。 這個項目本身也越滾越大&#xff0c;從最早的UI引擎變成…

Web前端JQuery面試題(一)

Web前端JQuery面試題&#xff08;一&#xff09; 一&#xff1a;選擇器 基本選擇器 什么是#id&#xff0c;element&#xff0c;.class&#xff0c;*&#xff0c;selector1, selector2, selectorN&#xff1f;答&#xff1a; 根據給定的id匹配一個元素&#xff0c;用于搜索&…

前端云原生——微信小程序云服務配置

前端同樣涉及云原生前言創建使用云開發項目搭建云環境測試云服務1. 獲取openid&#xff08;上傳本地login云函數&#xff09;1.1 創建部署login文件時報錯2. 自定義sum函數并創建部署3. 上傳圖片4. 前端操作數據庫5. 即時通信demo面試法寶歡迎各位小伙伴們&#xff01; 為大家推…

45天帶你玩轉Node(第一天)初探Node.js

45天帶你玩轉Node 粉絲要求博主系統的寫一篇關于Node.js的學習資料&#xff0c;但其實我們的Node.js知識點并不少&#xff0c;所以博主為大家搭建了一個專欄&#xff0c;為了方便大家系統的學習Node.js&#xff0c;大家記得訂閱哦&#xff01;雖然我們的Node.js還很年輕&#…

VLC的一些接口

其他參考鏈接&#xff1a; 1、https://www.cnblogs.com/smartsensor/p/4343769.html /*Set the video scaling factor。 Zero is a special value; it will adjust the video to the outputwindow/drawable (in windowed mode) or the entire screen. */ 設置縮放系數 void li…

【轉載】 安卓版手機微信如何清理微信空間

在手機微信的使用過程中&#xff0c;隨著手機微信使用的時間越長&#xff0c;手機微信占用的空間越大&#xff0c;其實手機微信存儲了很多聊天記錄包括圖片、視頻等大文件信息&#xff0c;此時如果手機存儲空間比較緊張&#xff0c;可以使用微信自帶的清理工具對手機微信空間進…

45天帶你玩轉Node(第二天)走進Node.js

45天帶你玩轉Node 粉絲要求博主系統的寫一篇關于Node.js的學習資料&#xff0c;但其實我們的Node.js知識點并不少&#xff0c;所以博主為大家搭建了一個專欄&#xff0c;為了方便大家系統的學習Node.js&#xff0c;大家記得訂閱哦&#xff01;雖然我們的Node.js還很年輕&#…

Windows2008安裝組件命令行工具ServerManagerCmd用法介紹

轉自&#xff1a;http://blog.sina.com.cn/s/blog_537de4b5010128al.html Windows2008 安裝組件服務等內容比原來復雜的多&#xff0c;用鼠標點來點去&#xff0c;既繁瑣也緩慢&#xff0c;所幸微軟提供了命令行工具ServerManagerCmd.exe 用法: ServerManagerCmd.exe安裝和刪除…

記錄今天登錄oracle時遇到的一個小問題--不能登錄

因為最近的項目使用的是oracle數據庫&#xff0c;所以我就裝了一個Windows虛擬機&#xff0c;在虛擬機上安裝了oracle 10g。之前一直都是掛起的&#xff0c;今天打開想練練的時候&#xff0c;發現plsql工具連接不上了。 用戶名是scott&#xff0c;密碼是scott&#xff0c;就是連…

深入Vue原理_數據響應式

歡迎各位小伙伴們&#xff01; 為大家推薦一款刷題神奇哦 點擊鏈接訪問牛客網 各大互聯網大廠面試真題。從基礎到入階乃至原理刨析類面試題 應有盡有&#xff0c;趕快來裝備自己吧&#xff01;助你面試穩操勝券&#xff0c;solo全場面試官 數據響應式響應式是什么如何實現數據響…

python scipy樣條插值函數大全(interpolate里interpld函數)

scipy樣條插值 scipy樣條插值1、樣條插值法是一種以可變樣條來作出一條經過一系列點的光滑曲線的數學方法。插值樣條是由一些多項式組成的&#xff0c;每一個多項式都是由相鄰的兩個數據點決定的&#xff0c;這樣&#xff0c;任意的兩個相鄰的多項式以及它們的導數(不包括仇階導…

EKS獨領風騷

前言 隨著公司的逐漸發展&#xff0c;開拓了更加多的子項目與小程序&#xff0c;這些都需要進行宣傳&#xff0c;但是管理以及部署新的應用是一個繁瑣的工程&#xff0c;部署麻煩而且更新業務的時候非常不方面。尤其面向用戶的時候&#xff0c;體驗感很差。于是想要使用docker…

Linux進程管理之ps的使用

主題Linux進程管理之ps工具的使用 一ps工具的介紹 ps: process state 進程狀態ps - report a snapshot of the current processesLinux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中 默認顯示的內容很少 [rootcentos65 ~]# psPID TTY TIME CMD2018 pts/0 …

openstack Q版部署-----安裝報錯問題

1、實例開機提示找不到磁盤Booting from Hard Disk... GRUB. 開啟 CPU 虛擬化支持。 將計算節點 nova.conf 配置修改如下即可&#xff1a; [libvirt] cpu_mode none virt_type qemu重啟服務 systemctl restart libvirtd.service openstack-nova-compute.service 2、錯誤: 超過…