mock.js使用

一、Mock.js入門

1. 什么是mock.js?

Mock.js (官網http://mockjs.com/)是一款模擬數據生成器,旨在幫助前端攻城獅獨立

于后端進行開發,幫助編寫單元測試。提供了以下模擬功能:

1,根據數據模板生成模擬數據

2,模擬 Ajax 請求,生成并返回模擬數據

3,基于 HTML 模板生成模擬數據

Mock.js 具有以下特點:

1.前后端分離,讓前端攻城師獨立于后端進行開發。

2.增加單元測試的真實性

3.通過隨機數據,模擬各種場景。

4.開發無侵入

5.不需要修改既有代碼,就可以攔截 Ajax 請求,返回模擬的響應數據。

6.用法簡單

7.符合直覺的接口

8.數據類型豐富

9.支持生成隨機的文本、數字、布爾值、日期、郵箱、鏈接、圖片、顏色等。

10.方便擴展

11.支持支持擴展更多數據類型,支持自定義函數和正則。

在進行前后端分離式的開發中,前端負責制作頁面和顯示數據,后端負責提供數據,前端通過后端提供的RESTFul規范的接口來獲取 JSON 格式的數據:

在這里插入圖片描述

對于前端開發人員來說,必須要從服務器獲取數據,所以就只能等待后端開發好接口之后,前端才可以獲取數據,這會影響前端開發的效果。

聰明的前端開發人員就會想:如果前端可以自己模擬出數據,那么在開發時就不需要服務器提供的數據了。于是就出現了mockjs

2. Mock.js安裝

1)使用CDN

2)使用本地文件

下載Mock.js: https://github.com/nuysoft/Mock

導入到本地頁面使用:
在這里插入圖片描述

引入:

<script src="js/mock-min.js"></script>

3. Mock.js入門案例

3.1. 模擬數據

需求:模擬一個用戶列表,用戶三個字段組件:自增ID、姓名

顯示效果如下:

{"list": [{"id": 1,"name": "測試"},{"id": 1,"name": "測試"},{"id": 1,"name": "測試"},{"id": 1,"name": "測試"},{"id": 1,"name": "測試"}]
}

Mock模擬代碼如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock入門案例</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body><div id="app1"></div>
</body>
<script>var data = Mock.mock({//list是一個數組,包含5個元素'list|5':[{'id':1,'name':'測試'}]})// 每一個層級比上一個多2個空格console.log(JSON.stringify(data,null,2 ))
</script>
</html>

測試結果:
在這里插入圖片描述

Mock.js模擬數據成功。

3.2. 使用實例

使用axios向模擬數據的服務發送請求,獲取模擬數據在頁面進行展示

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock入門案例</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body><div id="app"><ul><li v-for="u in users">id: {{u.id}}name:{{u.name}}</li></ul></div>
</body>
<script>var data = Mock.mock("/users","get",{//list是一個數組,包含5個元素'list|5':[{'id':1,'name':'測試'}]})const vm = new Vue({el:"#app",data:{users:[]},created:function(){//發送ajax請求axios.get("/users").then((res)=>{this.users = res.data.list;})}})
</script>
</html>

瀏覽器顯示效果如圖所示:
在這里插入圖片描述

二、 Mock.js的語法規范

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

1.數據模板定義規范(Data Template Definition,DTD)

2.數據占位符定義規范(Data Placeholder Definition,DPD)

1. 數據模板定義規范

數據模板中的每個屬性由 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

屬性值 中可以含有 @占位符。

屬性值 還指定了最終值的初始值和類型
例如:

var data = Mock.mock("/users","get",{//list是一個數組,包含5個元素'list|5':[{'id':1,'name':'測試'}]})

可見: list 是屬性名 中間使用|分隔,數字5是生成規則(表示生成5條數據),后面是json數據。

生成規則的含義需要依賴屬性值的類型才能確定。因此我們需要根據屬性的值類型來學習Mock.js的模板語法規范

1.1. 屬性值是字符串

1)‘name|count’: string**

通過重復 string 生成一個字符串,重復次數等于 count

<!DOCTYPE html>
<html lang="en">
<head<meta charset="UTF-8"><title>Mock入門案例</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let data = Mock.mock({//重復5次,生成一個具有5個對象的數組'list|5': [{'id': 1,'name':'測試',//重復11次組裝成一個字符串'phone|11':'1'}]
})
// 輸出結果
console.log(JSON.stringify(data,null,2))
</script>
</html>

//瀏覽器控制臺結果:

{"list": [{"id": 1,"name": "測試","phone": "11111111111"},{"id": 1,"name": "測試","phone": "11111111111"},{"id": 1,"name": "測試","phone": "11111111111"},{"id": 1,"name": "測試","phone": "11111111111"},{"id": 1,"name": "測試","phone": "11111111111"}]
}

2)‘name|min-max’: string

通過重復 string 生成一個字符串,重復次數大于等于 min,小于等于 max

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|5':  [{'id':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1'}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

顯示結果:

{"list": [{"id": 1,"name": "測試測試測試測試測試測試測試","phone": "11111111111"},{"id": 1,"name": "測試測試測試測試測試","phone": "11111111111"},{"id": 1,"name": "測試測試測試測試測試","phone": "11111111111"},{"id": 1,"name": "測試測試測試測試測試測試測試","phone": "11111111111"},{"id": 1,"name": "測試測試測試測試測試測試測試測試","phone": "11111111111"}]
}

可以發現:name屬性的值有長,有短,說明隨機重復設置成功。

1.2. 屬性值是數字

1)‘name|+1’: number
屬性值自動加 1,初始值為 number

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|5':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1'}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

瀏覽器顯示結果:

{"list": [{"id": 1,"name": "測試測試測試測試測試測試測試測試","phone": "11111111111"},{"id": 2,"name": "測試測試測試測試","phone": "11111111111"},{"id": 3,"name": "測試測試","phone": "11111111111"},{"id": 4,"name": "測試測試測試","phone": "11111111111"},{"id": 5,"name": "測試測試測試測試測試測試測試測試測試","phone": "11111111111"}]
}

可以發現:此時id的值是自動增長的。每次循環加1.

2)‘name|min-max’: number

生成一個大于等于 min、小于等于 max 的整數,屬性值 number 只是用來確定類型

示例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|5':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1',//生成200到1000以內隨機的整數'point|200-1000':0}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

瀏覽器效果如下所示:

{"list": [{"id": 1,"name": "測試測試測試測試","phone": "11111111111","point": 689},{"id": 2,"name": "測試測試測試測試","phone": "11111111111","point": 519},{"id": 3,"name": "測試測試測試測試測試測試測試","phone": "11111111111","point": 604},{"id": 4,"name": "測試測試測試","phone": "11111111111","point": 797},{"id": 5,"name": "測試測試測試測試","phone": "11111111111","point": 348}]
}

3)‘name|min-max.dcount’: value
生成一個浮點數,整數部分大于等于 min、小于等于 max,小數部分為dcount位
示例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|5':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1',//生成200到1000以內隨機的整數'point|200-1000':0,//整數部分大于等于3000,小于等于8000,max小數部分保留2位的數據'money|3000-8000.2':0}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

瀏覽器顯示如下圖所示:

{"list": [{"id": 1,"name": "測試測試測試測試","phone": "11111111111","point": 848,"money": 7080.35},{"id": 2,"name": "測試測試測試測試","phone": "11111111111","point": 530,"money": 4580.34},{"id": 3,"name": "測試測試測試測試測試","phone": "11111111111","point": 486,"money": 6253.33},{"id": 4,"name": "測試測試測試","phone": "11111111111","point": 627,"money": 7222.72},{"id": 5,"name": "測試測試測試測試","phone": "11111111111","point": 285,"money": 7821.81}]
}

4)‘name|min-max.dmin-dmax’: number

生成一個浮點數,整數部分大于等于 min、小于等于 max,小數部分保留 dmin 到

dmax 位。

示例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|5':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1',//生成200到1000以內隨機的整數'point|200-1000':0,//整數部分大于等于3000,小于等于8000,max小數部分保留2位的數據'money|3000-8000.2':0,//整數部分大于等于3000小于等于8000,小數隨機保留2到4位的小數'money2|1000-2000.2-4':0}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

瀏覽器控制臺顯示效果如下所示:

{"list": [{"id": 1,"name": "測試測試測試測試測試測試測試測試","phone": "11111111111","point": 694,"money": 3317.13,"money2": 1986.514},{"id": 2,"name": "測試測試測試測試測試測試","phone": "11111111111","point": 770,"money": 3912.08,"money2": 1971.5343},{"id": 3,"name": "測試測試測試","phone": "11111111111","point": 386,"money": 6353.74,"money2": 1036.605},{"id": 4,"name": "測試測試測試測試測試","phone": "11111111111","point": 241,"money": 4918.78,"money2": 1951.792},{"id": 5,"name": "測試測試測試測試測試測試測試","phone": "11111111111","point": 426,"money": 3075.37,"money2": 1828.802}]
}

1.3. 屬性是布爾值

1)‘name|1’: Boolean
隨機生成一個布爾值,值為 true 的概率是 1/2,值為 false 的概率同樣是 1/2

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|5':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1',//生成200到1000以內隨機的整數'point|200-1000':0,//生成整數部分大于等于3000,小于等于8000,max小數部分保留2位的數據'money|3000-8000.2':0,//整數部分大于等于3000小于等于8000,max小數部分隨機保留2到4位的小數'money2|1000-2000.2-4':0,//隨機生成布爾值,默認為ture,為true概率:1/2'status|1':true}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

2)‘name|min-max’: value
隨機生成一個布爾值,值為 value 的概率是 min / (min + max)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|5':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1',//生成200到1000以內隨機的整數'point|200-1000':0,//生成整數部分大于等于3000,小于等于8000,max小數部分保留2位的數據'money|3000-8000.2':0,//整數部分大于等于3000小于等于8000,max小數部分隨機保留2到4位的小數'money2|1000-2000.2-4':0,//隨機生成布爾值,默認為ture,為true概率:1/2'status|1':true,'default|1‐3':true}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

1.4. 屬性值是Object

1)‘name|count’: object

從屬性值 object 中隨機選取 count 個屬性。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body></body>
<script>let  data  = Mock.mock({'list|5':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1',//生成200到1000以內隨機的整數'point|200-1000':0,//生成整數部分大于等于3000,小于等于8000,max小數部分保留2位的數據'money|3000-8000.2':0,//整數部分大于等于3000小于等于8000,max小數部分隨機保留2到4位的小數'money2|1000-2000.2-4':0,//隨機生成布爾值,默認為ture,為true概率:1/2'status|1':true,'default|1‐3':true,//2的意思是從后面對象中隨機選取2個屬性進行展示'detail|2':{'id':1,'date':'2005‐01‐01','content':'記錄'}}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

瀏覽器顯示結果:

{"list": [{"id": 1,"name": "測試測試測試測試測試測試測試測試","phone": "11111111111","point": 733,"money": 6534.66,"money2": 1930.35,"status": true,"default‐3": false,"detail": {"content": "記錄","id": 1}},{"id": 2,"name": "測試測試測試測試測試","phone": "11111111111","point": 918,"money": 6777.32,"money2": 1738.8219,"status": true,"default‐3": true,"detail": {"date": "2005‐01‐01","content": "記錄"}},{"id": 3,"name": "測試測試測試測試測試測試","phone": "11111111111","point": 415,"money": 5692.17,"money2": 1140.123,"status": true,"default‐3": true,"detail": {"date": "2005‐01‐01","id": 1}},{"id": 4,"name": "測試測試測試測試測試測試測試測試","phone": "11111111111","point": 495,"money": 5877.03,"money2": 1632.1647,"status": true,"default‐3": true,"detail": {"date": "2005‐01‐01","content": "記錄"}},{"id": 5,"name": "測試測試測試測試測試測試測試測試","phone": "11111111111","point": 229,"money": 6538.04,"money2": 1383.342,"status": true,"default‐3": false,"detail": {"date": "2005‐01‐01","content": "記錄"}}]
}

可以發現模擬生成的數據結果:是從對象中隨機選取得幾個數據。
2 )‘name|min-max’: object
從屬性值 object中隨機選取 min到 max個屬性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|5':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1',//生成200到1000以內隨機的整數'point|200-1000':0,//生成整數部分大于等于3000,小于等于8000,max小數部分保留2位的數據'money|3000-8000.2':0,//整數部分大于等于3000小于等于8000,max小數部分隨機保留2到4位的小數'money2|1000-2000.2-4':0,//隨機生成布爾值,默認為ture,為true概率:1/2'status|1':true,'default|1‐3':true,//2的意思是從后面對象中隨機選取2到3個屬性進行展示'detail|2-3':{'id':1,'date':'2005‐01‐01','content':'記錄'}}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

1.5. 屬性值是數組

1)‘name|count’: array
通過重復屬性值 array 生成一個新數組,重復次數為 count

2)‘name|min-max’: array
通過重復屬性值 array 生成一個新數組,重復次數大于等于 min,小于等于 max。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|2-6':  [{//屬性值自動加1,后面1是初始值'id|+1':  1,//測試這個詞語 重復隨機次數:最大9次,最小重復2次'name|2-9': '測試','phone|11': '1',//生成200到1000以內隨機的整數'point|200-1000':0,//生成整數部分大于等于3000,小于等于8000,max小數部分保留2位的數據'money|3000-8000.2':0,//整數部分大于等于3000小于等于8000,max小數部分隨機保留2到4位的小數'money2|1000-2000.2-4':0,//隨機生成布爾值,默認為ture,為true概率:1/2'status|1':true,'default|1‐3':true,//2的意思是從后面對象中隨機選取2到3個屬性進行展示'detail|2-3':{'id':1,'date':'2005‐01‐01','content':'記錄'}}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

2. 數據占位符定義規范

Mock.Random 是一個工具類,用于生成各種隨機數據。Mock.Random 的方法在數據模板中稱為『占位符』.

書寫格式為: @占位符(參數 [參數])

內置方法列表:

TypeMethod
基本類型boolean, natural, integer, float, character, string, range, date, time, datetime, now
圖片image, dataImage
顏色color
文本paragraph, sentence, word, title, cparagraph, csentence, cword, ctitle
姓名first, last, name, cfirst, clast, cname
網站url, domain, email, ip, tld
地址area, region
編號guid, id

使用時只需要把值設置成 @方法名【內置列表名】 即可,比如,生成一個隨機的 Email:

在這里插入圖片描述

2.1. 基本方法

可以生成隨機的基本數據類型

1,string 字符串
2,integer 整數
3,date 日期

示例如下所示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|10': [{'id|+1': 1,//生成隨機字符串作為名稱,string是內置方法'name':'@string',//生成隨機數字'point':'@integer',//隨機日期'birthday':'@date'}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

瀏覽器運行顯示結果如下所示:

{"list": [{"id": 1,"name": "(mq","point": 5083791101873200,"birthday": "1977-07-13"},{"id": 2,"name": "isp@","point": 6599960830871660,"birthday": "1980-01-10"},{"id": 3,"name": "h5w%z","point": 5930212585321868,"birthday": "1986-02-09"},{"id": 4,"name": "4G!@","point": -2998846183626736,"birthday": "2005-11-15"},{"id": 5,"name": "FxRo","point": 1335300809353096,"birthday": "2007-05-15"},{"id": 6,"name": "sSpX","point": 4263721724318444,"birthday": "2008-07-05"},{"id": 7,"name": "3gyb3y","point": -7937459295974808,"birthday": "2009-07-29"},{"id": 8,"name": "$hHr9","point": -1902814810400284,"birthday": "1985-06-09},{"id": 9,"name": "s)Ib5Y","point": -4044267640262532,"birthday": "1975-12-22"},{"id": 10,"name": "mn0L","point": 5526227040106936,"birthday": "1974-02-03"}]
}

可以發現屬性值都是隨機生成的。

2.2. 圖像方法

內置方法image 隨機生成圖片地址

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|3': [{'id|+1': 1,'name':'@string','point':'@integer','birthday':'@date','img':'@image'}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

瀏覽器生成結果如下所示:

{"list": [{"id": 1,"name": "^XRWg","point": -4210258101944688,"birthday": "1970-11-13","img": "http://dummyimage.com/180x150"},{"id": 2,"name": "OGptm)z","point": -7325415739657424,"birthday": "1998-01-08","img": "http://dummyimage.com/250x250"},{"id": 3,"name": "nKFRq","point": 6928542938653648,"birthday": "1987-12-21","img": "http://dummyimage.com/250x250"}]
}

圖片隨機地址已經生成。

圖片設置的其他用法:
@image()

@image( size )

@image( size, background )

@image( size, background, text )

@image( size, background, foreground, text )

@image( size, background, foreground, format, text )

size:尺寸,格式為:‘寬x高’

background:背景色,格式為:#FFFFFF

text:圖片上顯示的文本

foreground:廣本顏色

format:圖片格式,可選值包括:png、gif、jpg。

@image()

// => “http://dummyimage.com/125x125”

@image(‘200x100’)

// => “http://dummyimage.com/200x100”

@image(‘200x100’, ‘#fb0a2a’)

// => “http://dummyimage.com/200x100/fb0a2a”

@image(‘200x100’, ‘#02adea’, ‘Hello’)

// => “http://dummyimage.com/200x100/02adea&text=Hello”

@image(‘200x100’, ‘#00405d’, ‘#FFF’, ‘Mock.js’)

// => “http://dummyimage.com/200x100/00405d/FFF&text=Mock.js”

@image(‘200x100’, ‘#ffcc33’, ‘#FFF’, ‘png’, ‘!’)

// => “http://dummyimage.com/200x100/ffcc33/FFF.png&text=!”

2.3. 文本方法

@title: 標題

@cword(100) :文本內容 參數為字數
代碼實例如下所示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|3': [{'id|+1': 1,'name':'@string','point':'@integer','birthday':'@date','img':'@image',//隨機標題'title':'@title',//隨機標題內容,字數為20'content':'@cword(20)'}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

顯示結果:

{"list": [{"id": 1,"name": "eQw!Qks","point": 2809586035596492,"birthday": "1996-12-28","img": "http://dummyimage.com/336x280","title": "Dxmessvmjh Ykcqcqi Nncy Cwbhicpgj Smdmbbk Zwbsjrhww Qohelmygyx""content": "無深性命象院積少時到但共院太理音究維生學"},{"id": 2,"name": "RgS*","point": -1288728653110828,"birthday": "2005-01-12","img": "http://dummyimage.com/720x300","title": "Ussi Yngavtemlr Kryvkh","content": "好道立或易標花天外路位使身稱深作響向之們"},{"id": 3,"name": "e^o","point": 2829338975044496,"birthday": "1999-01-29","img": "http://dummyimage.com/120x600","title": "Woy Gswrz Hwmrxx","content": "產寫總必指農進和專許想式層人位心準適開習"}]
}

可以發現:

@title: 生成隨機的英文標題
@cword(字數):生成隨機的中文標題

3)其他的文本方法

l 單個字符:
@character

l 英文單詞

@word
@word(length)
@word(min,max)

l 英文句子
@sentence
@sentence(len)
@sentence(min,max)

l 中文漢字
@cword
@cword(len)
@cword(min,max)

l 中文句子
@csentence
@csentence(len)
@csentence(min,max)

l 中文段落
@cparagraph
@cparagraph(len)
@cparagraph(min,max)

l 中文標題
@ctitle
@ctitle(len)
@ctitle(min,max)

2.4. 名稱方法

1)英文名生成
@first

@last

@name
姓名
@name(middle)
middle:是否生成中間名字
@name()

// => “Larry Wilson”

@name(true) //true表示生成

// => “Helen Carol Martinez”

2)中文名
@cfirst

@clast

@cname
@cname()

// => “袁軍”

如果需要生成中文名稱,需要在前面加上c字母做一標識。
@cname :中文名稱
@cfirst:中文姓氏
@last:英文姓氏

使用實例如下所示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|3': [{'id|+1': 1,//名'name':'@cname','ename':'@last','cfirst':'@cfirst','point':'@integer','birthday':'@date','img':'@image',//隨機標題'title':'@title',//隨機標題內容,字數為20'content':'@cword(20)'}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

2.5. 網絡方法

可以生成url ip email等網絡相關信息

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|3': [{'id|+1': 1,//名'name':'@cname','ename':'@last','cfirst':'@cfirst','point':'@integer','birthday':'@date','img':'@image',//隨機標題'title':'@title',//隨機標題內容,字數為20'content':'@cword(20)',//生成地址'url':"@url",//生成ip'ip':"@ip",//生成郵箱'email':"@email"}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

生成結果如下所示:

{"list": [{"id": 1,"name": "江強","ename": "White","cfirst": "尹","point": 4877914021134976,"birthday": "1971-07-20","img": "http://dummyimage.com/160x600","title": "Zmbq Lqkt Bvmukqilyb Qbtsdrdn Rzjhyqc Fbzw","content": "門層對表產么高習原四王從區照派天即也就布","url": "news://wyqb.pa/fadm","ip": "41.185.151.157","email": "h.dghxxob@ioldag.yu"},{"id": 2,"name": "姚芳","ename": "Miller","cfirst": "鄭","point": 614768891928184,"birthday": "1999-10-27","img": "http://dummyimage.com/120x90","title": "Igaermo Muwcd Oxuy Phrbpiooq Pmccbcx Jqiniwn","content": "斷放活備者組不取平元數又技度研名于何越后","url": "news://segyvpfd.vc/gfpyvz","ip": "133.35.163.143","email": "u.xnes@isksci.tc"},{"id": 3,"name": "文霞","ename": "Williams","cfirst": "龔","point": 1051041620263212,"birthday": "2006-05-30","img": "http://dummyimage.com/125x125","title": "Ybmuoycm Jsvc Obb Jpydendf","content": "外素特不專現工卻因與發屬集身設本究且重傳","url": "nntp://oip.dz/wrqdpd","ip": "238.129.84.64","email": "e.djfbicgdc@kpvlyvhvt.gn"}]
}

隨機生成網絡地址,ip地址,郵箱地址:用法如下
//生成地址
‘url’:"@url"
//生成ip
‘ip’:"@ip",
//生成郵箱
‘email’:"@email"

2.6. 地址方法

1)生成中國大區:@region 區域 (華北……)
2)生成省份:@province
3)生成城市:@city @city(prefix)

//prefix:布爾值,是否生成所屬的省

@city()
// => “唐山市”

@city(true)
// => “福建省 漳州市”

4)生成縣:@county @county(prefix)
//prefix:布爾值,是否生成所屬省、市

@county()
// => “上杭縣”

@county(true)
// => “甘肅省 白銀市 會寧縣”

5)生成郵政編碼: @zip

6)生成身份證號 @ID

@ID()
// => “420000200710091854”

7)生成GUID字符串 @guid
@guid()
// => “662C63B4-FD43-66F4-3328-C54E3FF0D56E”

生成實例如下所示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body>
</body>
<script>let  data  =  Mock.mock({'list|3': [{'id|+1': 1,//名'name':'@cname','ename':'@last','cfirst':'@cfirst','point':'@integer','birthday':'@date','img':'@image',//隨機標題'title':'@title',//隨機標題內容,字數為20'content':'@cword(20)',//生成地址'url':"@url",//生成ip'ip':"@ip",//生成郵箱'email':"@email",//生成區域'erea':'@region',//生成省,市'city':'@city(true)',//縣'contry':'@county(true)','id':'@ID','zip':'@zip','guid':'@guid'}]})// 輸出結果console.log(JSON.stringify(data, null, 2))
</script>
</html>

瀏覽器輸出結果:

{"list": [{"id": 1,"name": "楊軍","ename": "Robinson","cfirst": "盧","point": 7707259653262132,"birthday": "2017-02-08","img": "http://dummyimage.com/336x280","title": "Lhefgmvoo Aocod Wlbql Dsdhwm Mqdaoaa Oknucn Urrcw","content": "到局這方多再律求認辦萬員置特目且戰持十省","url": "cid://vnthestwl.tp/ijdlnclh","ip": "37.75.137.193","email": "y.ddwhfbrgz@fglsuyufkb.mw","erea": "華中","city": "香港特別行政區 九龍","contry": "寧夏回族自治區 固原市 涇源縣","zip": "269948","guid": "8Bc7Cb4A-e114-53de-B815-9db9cD57faA1"},{"id": 2,"name": "何敏","ename": "Taylor","cfirst": "廖","point": 7537535106427220,"birthday": "1973-07-31","img": "http://dummyimage.com/240x400","title": "Ajwmx Nmdfubn Qjolmdslq Cduoktjva","content": "強用回裝近為為術白明養被隊治走鐵話格入他","url": "telnet://cwow.no/rslekzq","ip": "79.188.30.248","email": "h.bwul@lnxenhizew.mp","erea": "華東","city": "陜西省 咸陽市","contry": "西藏自治區 那曲地區 巴青縣","zip": "386548","guid": "87b8a66c-13B7-eCde-f31e-Ae3E91493AE0"},{"id": 3,"name": "葉娜","ename": "Garcia","cfirst": "姚","point": 7922600921770400,"birthday": "1972-04-01","img": "http://dummyimage.com/250x250","title": "Umumjnomv Aualxrhxs Dhbduggch Qcxv Uqjtmoytr","content": "里鐵還角深分非新了時小入層素幾立傳壓按和","url": "telnet://jyft.nz/rypdqqpm","ip": "131.162.164.166","email": "k.iddfzs@xdvm.io","erea": "華東","city": "四川省 宜賓市","contry": "香港特別行政區 九龍 黃大仙區","zip": "497267","guid": "01EBF61D-0Eef-01dd-B971-74aEF67fd53e"}]
}

三、 Mock.js案例

1. 需求分析

向Mock.js模擬好的書籍發送請求,展示用戶列表數據。

請求:/user/list

請求方式:get

2. 模擬數據

let  data  =  Mock.mock('/user/list','get',{'list|3': [{'id|+1': 1,//名'name':'@cname','ename':'@last','cfirst':'@cfirst','point':'@integer','birthday':'@date','img':'@image',//隨機標題'title':'@title',//隨機標題內容,字數為20'content':'@cword(20)',//生成地址'url':"@url",//生成ip'ip':"@ip",//生成郵箱'email':"@email",//生成區域'erea':'@region',//生成省,市'city':'@city(true)',//縣'contry':'@county(true)','id':'@ID','zip':'@zip','guid':'@guid'}]})

3. 發送ajax請求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Mock</title><script src="js/vuejs-2.5.16.js"></script><script src="js/axios-0.18.0.js"></script><script src="js/mock-min.js"></script>
</head>
<body><div id="app">
<table border="1px;" style="width: 600px;height: 60px;"><tr><td>編號</td><td>姓名</td><td>標題</td><td>地址</td></tr><tr v-for="(u,k) in users"><td>{{k+1}}</td><td>{{u.name}}</td><td>{{u.title}}</td><td>{{u.city}}</td></tr></table></div>
</body>
<script>let  data  =  Mock.mock('/user/list','get',{'list|3': [{'id|+1': 1,//名'name':'@cname','ename':'@last','cfirst':'@cfirst','point':'@integer','birthday':'@date','img':'@image',//隨機標題'title':'@title',//隨機標題內容,字數為20'content':'@cword(20)',//生成地址'url':"@url",//生成ip'ip':"@ip",//生成郵箱'email':"@email",//生成區域'erea':'@region',//生成省,市'city':'@city(true)',//縣'contry':'@county(true)','id':'@ID','zip':'@zip','guid':'@guid'}]});new Vue({el:'#app',data:{users:[],},created:function(){//發送ajax請求axios.get('/user/list').then((res)=>{this.users = res.data.list;})}})
</script>
</html>


---------------------
作者:Armymans
來源:CSDN
原文:https://blog.csdn.net/qq_43652509/article/details/84029619
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

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

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

相關文章

面向對象——概念(成員變量、靜態變量、成員方法、靜態方法、垃圾回收機制、重載、包)...

靜態變量和成員變量的區別&#xff1a; 1、成員變量描述的是對象的特征&#xff0c;包含在對象之中。不同的對象成員變量彼此獨立。一個對象成員變量的改變&#xff0c;不會影響其他對象。 靜態變量獨立在對象之外&#xff0c;是所有對象共享的變量。靜態變量改變后會影響所有對…

【ArcGIS微課1000例】0042:ArcGIS自帶取色器工具的妙用

在ArcGIS中作圖時,通常要進行顏色對照填充,輸入特定的RGB值,本文介紹ArcGIS自帶取色器工具的妙用,及第三方顏色拾取工具。 文章目錄 一、ArcGIS自帶取色器二、第三方取色器工具一、ArcGIS自帶取色器 很多人可能不知道,ArcGIS中自帶取色器工具,如下圖所示。 當然了,自帶…

第一輪復習完畢,kmp走起

//代碼via:http://blog.csdn.net/v_JULY_v/article/details/6111565 //簡單思路via:http://study.163.com/course/courseLearn.htm?courseId468002#/learn/video?lessonId1024414&courseId468002 1 #include<iostream>2 #include<string>3 #include<vecto…

微信.NET SDK-Senparc資料整理

微信生態系統包括微信公眾號、小程序、微信支付、微信開放平臺、企業微信、小游戲等&#xff0c;官方提供了很多的API接口。Senparc是目前使用最廣泛的微信.NET SDK&#xff0c;同時支持支持.NET Framework 4.5/.NET Core 2.x/.NET Core 3.x/.NET 5/.NET 6。由于在微信生態開發…

7 種提升 Spring Boot 吞吐量神技

目錄 二、增加內嵌Tomcat的最大連接數 三、使用ComponentScan()定位掃包比SpringBootApplication掃包更快 四、默認tomcat容器改為Undertow&#xff08;Jboss下的服務器&#xff0c;Tomcat吞吐量5000&#xff0c;Undertow吞吐量8000&#xff09; 五、使用 BufferedWriter 進…

Atitit.ati?orm的設計and架構總結?適用于java?c#?php版

Atitit.ati orm的設計and架構總結 適用于java c# php版 1. Orm的目標 1 1.1. 動態obj 1 1.2. Hb的api(meger,save,update,del) 1 2. Orm的概念 1 3. 動態obj 2 4. 參考 4 1. Orm的目標 1.1. 動態obj 1.2. Hb的api(meger,save,update,del) 2. Orm的概念 saveOrUpdate后的對象會納…

【ArcGIS微課1000例】0043:ArcGIS縮略圖的創建及應用

縮略圖通常出現在地圖文檔中&#xff0c;便于在啟動頁面中快速打開指定的地圖文檔&#xff0c;提高效率。 文章目錄一、縮略圖預覽二、縮略圖創建一、縮略圖預覽 打開ArcMap軟件&#xff0c;彈出啟動窗口&#xff0c;在最近打開的文檔中&#xff0c;可以看到兩類&#xff0c;一…

JSP簡單登錄系統

Login登陸界面 <body> 登陸 <% session.invalidate();%> <form action"TestPW.jsp" method"post">用戶名<input type"text" name"username"> 密碼<input type"password" name"password&quo…

手動從0搭建ABP框架-ABP官方完整解決方案和手動搭建簡化解決方案實踐

本文主要講解了如何把ABP官方的在線生成解決方案運行起來&#xff0c;并說明了解決方案中項目間的依賴關系。然后手動實踐了如何從0搭建了一個簡化的解決方案。ABP官方的在線生成解決方案源碼下載參考[3]&#xff0c;手動搭建的簡化的解決方案源碼下載參考[4]。一.ABP官方在線生…

Java捕獲并處理線程失敗拋出的異常

使用 UncaughtExceptionHandler 示例代碼如下&#xff1a; Thread.UncaughtExceptionHandler handler new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread th, Throwable ex) {System.out.println("Uncaught exception: " ex);} }; Th…

【ArcGIS微課1000例】0044:ArcGIS使用山體陰影顯示DEM的3種方法

本文講解了ArcGIS使用山體陰影顯示DEM的3種方法:“影像分析”窗口、使用山體陰影效果和山體陰影效果工具的不同之處。 文章目錄 一、“影像分析”窗口二、使用山體陰影效果三、山體陰影工具一、“影像分析”窗口 使用山體陰影顯示 DEM 的方法有兩種。最簡單并且最具交互效果的…

區塊鏈每日投資指南(0129)-證監會副主席表示數字貨幣需要監管

上一周的走勢依然是工作日下跌&#xff0c;周末拉升的結局。這主要原因依然是&#xff0c;周末不上班。最終政策出爐之前&#xff0c;市場恐怕還將繼續震蕩。下周的工作日恐怕會重演下跌的節奏。但是經過了17號&#xff0c;23號&#xff0c;26號三次筑底來看&#xff0c;如果政…

藍綠發布、滾動發布、灰度發布,有什么區別?

在項目迭代的過程中&#xff0c;不可避免需要”上線“。上線對應著部署&#xff0c;或者重新部署&#xff1b;部署對應著修改&#xff1b;修改則意味著風險。目前有很多部署發布的技術, 這兒將常見的做一個總結。 上面所說難免有些抽象, 舉一個情景例子, 加入你是微博項目負責…

iOS 音頻開發

音頻基礎知識 組成 音頻文件的組成&#xff1a;文件格式(或者音頻容器) 數據格式(或者音頻編碼)。 文件格式(或音頻容器)是用于形容文件本身的格式。 我們可以通過多種不同的方法為真正的音頻數據編碼。例如CAF文件便是一種文件格式&#xff0c;它能夠包含MP3格式&#xff0c;…

【ArcGIS微課1000例】0045:ArcGIS制圖模板的自定義與使用方法

怎樣在ArcGIS中保存地圖模板以在地圖制圖與打印之前使用呢? 文章目錄 一、地圖模板簡介二、地圖模板創建1. 創建模板2. 創建縮略圖3. 保存模板三、地圖模板使用一、地圖模板簡介 使用ArcMap打開一個已有的地圖模板,【文件】→【新建】,任選一個模板,這里選擇一個傳統模板。…

api 接口開發理論 在php中調用接口以及編寫接口

如&#xff1a;http://localhost/openUser.php?actget_user_list&typejson 在這里openUser.php相當于一個接口&#xff0c;其中get_user_list 是一個API&#xff08;獲取用戶列表&#xff09;&#xff0c;講求返回的數據類型為JSON格式。 你只需要在你PHP代碼中執行這條鏈…

怎么樣的框架對于開發者是友好的?

云原生離.NET開發到底有多遠&#xff1f;云原生的概念由來不久&#xff0c;故事從“上云”開始&#xff0c;伴隨dorker、k8s等技術的推出&#xff0c;以及CNCF與各大云廠商的共同加持&#xff0c;云原生逐漸被大家所熟知。云原生不依賴具體的云&#xff0c;不管公有云還是私有云…

JS 燒腦面試題大賞

本文精選了20多道具有一定迷惑性的js題&#xff0c;主要考察的是類型判斷、作用域、this指向、原型、事件循環等知識點&#xff0c;每道題都配有詳細傻瓜式的解析&#xff0c;偏向于初學者&#xff0c;大佬請隨意。 第1題 let a 1 function b(a) {a 2console.log(a) } b(a)…

蘋果ios用js的Date()出現NaN問題解決辦法

原文:蘋果ios用js的Date&#xff08;&#xff09;出現NaN問題解決辦法ios使用如下方法獲得NaN&#xff0c;安卓手機則是正常計算&#xff0c;解決方法是換個這個時間的格式 new Date("2017-04-28 23:59:59").getTime() 換成如下方式就正常了&#xff0c;就是‘-’換成…

Thinkphp 驗證碼、文件上傳

一、驗證碼 驗證碼參數 例題&#xff1a;登錄時驗證下驗證碼 LoginController.class.php <?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller {public function Login(){if(empty($_POST)){$this->display(); } e…