Mock.js常用方法

木头的喵喵拖孩

前后端分离的项目中经常会使用 Mock.js 来生成假数据填充页面,但老是忘记常用方法,去官网查 API,有时候官网打不开或者卡的要死,所以写了个简单的笔记。

安装

1
npm install mockjs

使用

单个函数的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
let Mock = require("mockjs");

// Basic

/**
* 返回一个随机的布尔值。
* @param {number} min 指示参数 current 出现的概率。概率计算公式为 min / (min + max)。该参数的默认值为 1,即有 50% 的概率返回参数 current。
* @param {number} max 指示参数 current 的相反值 !current 出现的概率。概率计算公式为 max / (min + max)。该参数的默认值为 1,即有 50% 的概率返回参数 !current。
* @param {boolean} current 可选值为布尔值 true 或 false。如果未传入任何参数,则返回 true 和 false 的概率各为 50%。该参数没有默认值。在该方法的内部,依据原生方法 Math.random() 返回的(浮点)数来计算和返回布尔值,例如在最简单的情况下,返回值是表达式 Math.random() >= 0.5 的执行结果。
*/
Mock.Random.boolean(min, max, current);

/**
* 返回一个随机的自然数(大于等于 0 的整数)。
* @param {number} min 指示随机自然数的最小值。默认值为 0。
* @param {number} max 指示随机自然数的最大值。默认值为 9007199254740992。
*/
Mock.Random.natural(min, max);

/**
* 返回一个随机的整数。
* @param {number} min 指示随机整数的最小值。默认值为 -9007199254740992。
* @param {number} max 指示随机整数的最大值。默认值为 9007199254740992。
*/
Mock.Random.integer(min, max);

/**
* 返回一个随机的浮点数。
* @param {number} min 整数部分的最小值。默认值为 -9007199254740992。
* @param {number} max 整数部分的最大值。默认值为 9007199254740992。
* @param {number} dmin 小数部分位数的最小值。默认值为 0。
* @param {number} dmax 小数部分位数的最大值。默认值为 17。
*/
Mock.Random.float(min, max, dmin, dmax);

/**
* 返回一个随机字符。
* @param {string} pool 字符串。表示字符池,将从中选择一个字符返回。如果传入了 'lower' 或 'upper'、'number'、'symbol',表示从内置的字符池从选取
* {
* lower: "abcdefghijklmnopqrstuvwxyz",
* upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
* number: "0123456789",
* symbol: "!@#$%^&*()[]"
* }
*/
Mock.Random.character(pool);

/**
* 返回一个随机字符串。
* @param {string} pool 字符串。表示字符池,将从中选择一个字符返回。如果传入了 'lower' 或 'upper'、'number'、'symbol',表示从内置的字符池从选取
* @param {number} min 随机字符串的最小长度。默认值为 3。
* @param {number} max 随机字符串的最大长度。默认值为 7。
*/
Mock.Random.string(pool, min, max);

/**
* 返回一个整型数组。
* @param {number} start 数组中整数的起始值。
* @param {number} stop 数组中整数的结束值(不包含在返回值中)。
* @param {number} step 数组中整数之间的步长。默认值为 1。
*/
Mock.Random.range(start, stop, step);

// Date

/**
* 返回一个随机的日期字符串。
* @param {string} format 指示生成的日期字符串的格式。默认值为 yyyy-MM-dd。
*
* Format Description Example
* yyyy A full numeric representation of a year, 4 digits 1999 or 2003
* yy A two digit representation of a year 99 or 03
* y A two digit representation of a year 99 or 03
* MM Numeric representation of a month, with leading zeros 01 to 12
* M Numeric representation of a month, without leading zeros 1 to 12
* dd Day of the month, 2 digits with leading zeros 01 to 31
* d Day of the month without leading zeros 1 to 31
* HH 24-hour format of an hour with leading zeros 00 to 23
* H 24-hour format of an hour without leading zeros 0 to 23
* hh 12-hour format of an hour without leading zeros 1 to 12
* h 12-hour format of an hour with leading zeros 01 to 12
* mm Minutes, with leading zeros 00 to 59
* m Minutes, without leading zeros 0 to 59
* ss Seconds, with leading zeros 00 to 59
* s Seconds, without leading zeros 0 to 59
* SS Milliseconds, with leading zeros 000 to 999
* S Milliseconds, without leading zeros 0 to 999
* A Uppercase Ante meridiem and Post meridiem AM or PM
* a Lowercase Ante meridiem and Post meridiem am or pm
* T Milliseconds, since 1970-1-1 00:00:00 UTC 759883437303
*
*/
Mock.Random.date(format);

/**
* 返回一个随机的时间字符串。
* @param {string} format 指示生成的时间字符串的格式。默认值为 HH:mm:ss。
*/
Mock.Random.time(format);

/**
* 返回一个随机的日期和时间字符串。
* @param {string} format 指示生成的日期和时间字符串的格式。默认值为 yyyy-MM-dd HH:mm:ss。
*/
Mock.Random.datetime(format);

// Image

/**
* 生成一个随机的图片地址。
* @param {string} size 指示图片的宽高,格式为 '宽x高'。默认从下面的数组中随机读取一个:
[
'300x250', '250x250', '240x400', '336x280',
'180x150', '720x300', '468x60', '234x60',
'88x31', '120x90', '120x60', '120x240',
'125x125', '728x90', '160x600', '120x600',
'300x600'
]
* @param {string} background 指示图片的背景色。默认值为 '#000000'。
* @param {string} foreground 指示图片的前景色(文字)。默认值为 '#FFFFFF'。
* @param {string} format 指示图片的格式。默认值为 'png',可选值包括:'png'、'gif'、'jpg'。
* @param {string} text 指示图片上的文字。默认值为参数 size。
*/
Mock.Random.image(size, background, foreground, format, text);

/**
* 生成一段随机的 Base64 图片编码。
* @param {string} size 指示图片的宽高,格式为 '宽x高'。默认从下面的数组中随机读取一个:
* @param {string} text 指示图片上的文字。默认值为参数 size。
*/
Mock.Random.dataImage(size, text);

// Color

/**
* 随机生成一个有吸引力的颜色,格式为 '#RRGGBB'。
*/
Mock.Random.color();

/**
* 随机生成一个有吸引力的颜色,格式为 '#RRGGBB'。
*/
Mock.Random.hex();

/**
* 随机生成一个有吸引力的颜色,格式为 'rgb(r, g, b)'。
*/
Mock.Random.rgb();

/**
* 随机生成一个有吸引力的颜色,格式为 'rgba(r, g, b, a)'。
*/
Mock.Random.rgba();

/**
* 随机生成一个有吸引力的颜色,格式为 'hsl(h, s, l)'。
*/
Mock.Random.hsl();

// Text

/**
* 随机生成一段文本。
* @param {number} min 指示文本中句子的最小个数。默认值为 3。
* @param {number} max 指示文本中句子的最大个数。默认值为 7。
*/
Mock.Random.paragraph(min, max);

/**
* 随机生成一个中文段落。
* @param {number} min 指示文本中句子的最小个数。默认值为 3。
* @param {number} max 指示文本中句子的最大个数。默认值为 7。
*/
Mock.Random.cparagraph(min, max);

/**
* 随机生成一个句子,第一个单词的首字母大写。
* @param {number} min 指示句子中单词的最小个数。默认值为 12。
* @param {number} max 指示句子中单词的最大个数。默认值为 18。
*/
Mock.Random.sentence(min, max);

/**
* 随机生成一段中文文本。
* @param {number} min 指示句子中单词的最小个数。默认值为 12。
* @param {number} max 指示句子中单词的最大个数。默认值为 18。
*/
Mock.Random.csentence(min, max);

/**
* 随机生成一个单词。
* @param {number} min 指示单词中字符的最小个数。默认值为 3。
* @param {number} max 指示单词中字符的最大个数。默认值为 10。
*/
Mock.Random.word(min, max);

/**
* 随机生成一个汉字。
* @param {string} pool 汉字字符串。表示汉字字符池,将从中选择一个汉字字符返回。
* @param {number} min 随机汉字字符串的最小长度。默认值为 1。
* @param {number} max 随机汉字字符串的最大长度。默认值为 1。
*/
Mock.Random.cword(pool, min, max);

/**
* 随机生成一句标题,其中每个单词的首字母大写。
* @param {number} min 指示单词中字符的最小个数。默认值为 3。
* @param {number} max 指示单词中字符的最大个数。默认值为 7。
*/
Mock.Random.title(min, max);

/**
* 随机生成一句中文标题。
* @param {number} min 指示单词中字符的最小个数。默认值为 3。
* @param {number} max 指示单词中字符的最大个数。默认值为 7。
*/
Mock.Random.ctitle(min, max);

// Name

/**
* 随机生成一个常见的英文名。
*/
Mock.Random.first();

/**
* 随机生成一个常见的英文姓。
*/
Mock.Random.last();

/**
* 随机生成一个常见的英文姓名。
* @param {boolean} middle 布尔值。指示是否生成中间名。
*/
Mock.Random.name(middle);

/**
* 随机生成一个常见的中文名。
*/
Mock.Random.cfirst();

/**
* 随机生成一个常见的中文姓。
*/
Mock.Random.clast();

/**
* 随机生成一个常见的中文姓名。
*/
Mock.Random.cname();

// Web

/**
* 随机生成一个 URL。
* @param {string} protocol 指定 URL 协议。例如 http。
* @param {string} host 指定 URL 域名和端口号。例如 nuysoft.com。
*/
Mock.Random.url(protocol, host);

/**
* 随机生成一个 URL 协议。返回以下值之一:
* 'http'、'ftp'、'gopher'、'mailto'、'mid'、'cid'、'news'、'nntp'、'prospero'、'telnet'、'rlogin'、'tn3270'、'wais'。
*/
Mock.Random.protocol();

/**
* 随机生成一个域名。
*/
Mock.Random.domain();

/**
* 随机生成一个顶级域名(Top Level Domain)。
*/
Mock.Random.tld();

/**
* 随机生成一个邮件地址。
* @param {string} domain 指定域名。
*/
Mock.Random.email(domain);

/**
* 随机生成一个 IP 地址。
*/
Mock.Random.ip();

// Address

/**
* 随机生成一个(中国)大区。
*/
Mock.Random.region();

/**
* 随机生成一个(中国)省(或直辖市、自治区、特别行政区)。
*/
Mock.Random.province();

/**
* 随机生成一个(中国)市。
* @param {boolean} prefix 布尔值。指示是否生成所属的省。
*/
Mock.Random.city(prefix);

/**
* 随机生成一个(中国)县。
* @param {boolean} prefix 布尔值。指示是否生成所属的省、市。
*/
Mock.Random.county(prefix);

/**
* 随机生成一个邮政编码(六位数字)。
*/
Mock.Random.zip();

// Miscellaneous

/**
* 随机生成一个 GUID。
*/
Mock.Random.guid();

/**
* 随机生成一个 18 位身份证。
*/
Mock.Random.id();

/**
* 生成一个全局的自增整数。
* @param {number} step 指示自增的步长。默认值为 1。
*/
Mock.Random.increment(step);

模板使用

在模板字符串中使用函数,只需要在函数前加上 @ 符号即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let Mock = require("mockjs");

let data = Mock.mock({
"array|1-20": [
{
"id|+1": 1,
success: "@boolean()",
message: "@string()",
name: "@cname()",
age: "@integer(18, 60)",
addr: "@county(true)",
},
],
});

参考

Mock.js Example
Mock.js Doc

  • 标题: Mock.js常用方法
  • 作者: 木头的喵喵拖孩
  • 创建于: 2024-07-19 16:36:12
  • 更新于: 2024-07-19 17:36:02
  • 链接: https://blog.xx-xx.top/2024/07/19/Mock-js常用方法/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。