mockjs基本用法

3 阅读2分钟

1. 安装 Mock.js

// 使用 CDN:
<script src="https://cdn.jsdelivr.net/npm/mockjs@1.1.0/dist/mock-min.js"></script>
// 使用 npm:
npminstall mockjs --save

2. 基本用法

Mock.js 提供了 Mock.mock() 方法来生成模拟数据。

生成简单数据:

// 生成一个随机整数
var data = Mock.mock('@integer(1, 100)'); // 生成1到100之间的随机整数
console.log(data);

// 生成一个随机字符串
var str = Mock.mock('@string("abcdefghijklmnopqrstuvwxyz", 5)'); // 生成长度为5的随机字符串
console.log(str);

生成复杂对象:

var data = Mock.mock({
  'id|+1': 1, // 生成递增的ID
  'name': '@cname', // 生成中文名字
  'age|18-60': 20, // 生成18到60之间的随机年龄
  'address': '@county(true)', // 生成详细的地址(省市区)
  'email': '@email', // 生成随机邮箱
  'date': '@date("yyyy-MM-dd")' // 生成指定格式的日期
});

console.log(data);

3. 模拟 API 请求

Mock.js 可以拦截 HTTP 请求并返回模拟数据。通常与 mockjsaxiosfetch 结合使用。

拦截 GET 请求:

Mock.mock('/api/users', {
  'list|1-10': [{
    'id|+1': 1,
    'name': '@cname',
    'age|18-60': 20,
    'email': '@email'
  }]
});

// 使用 axios 或 fetch 发起请求时,会返回模拟的数据
axios.get('/api/users').then(response => {
  console.log(response.data);
});

拦截 POST 请求:

Mock.mock('/api/login', 'post', {
  'status': 'success',
  'token': '@guid' // 生成一个GUID作为token
});

// 发送POST请求时,会返回模拟的登录响应
axios.post('/api/login', {
  username: 'admin',
  password: '123456'
}).then(response => {
  console.log(response.data);
});

4. 数据模板

Mock.js 支持通过模板定义数据结构,并可以根据模板生成大量模拟数据。

定义模板:

var template = {
  'id|+1': 1,
  'name': '@cname',
  'age|18-60': 20,
  'email': '@email'
};

// 根据模板生成10条数据
var users = Mock.mock(template, 10);

console.log(users);

5. 常用占位符

Mock.js 提供了许多内置的占位符,可以直接使用这些占位符生成不同类型的数据。

占位符描述
@integer(min, max)生成指定范围内的随机整数
@float(min, max, dmin, dmax)生成指定范围内的随机浮点数
@boolean()生成随机布尔值
@string(characters, min, max)生成指定字符集的随机字符串
@character(type)生成随机字符(可选类型:lower、upper、all)
@natural(min, max)生成自然数
@date(format)生成指定格式的日期
@time(format)生成指定格式的时间
@now(format)生成当前时间
@guid()生成 GUID
@word(min, max)生成随机单词
@sentence(min, max)生成随机句子
@paragraph(min, max)生成随机段落
@cname()生成随机中文名字
@name()生成随机英文名字
@region()生成随机地区
@province()生成随机省份
@city()生成随机城市
@county()生成随机区县
@zip()生成随机邮政编码
@email()生成随机邮箱
@url()生成随机 URL

6. 自定义函数

你还可以通过自定义函数来生成更复杂的模拟数据。

Mock.Random.extend({
  myCustomData: function() {
    return '这是自定义的数据';
  }
});

var data = Mock.mock({
  'customData': '@myCustomData'
});

console.log(data.customData); // 输出: 这是自定义的数据

总结

Mock.js 是一个非常强大的工具,能够帮助开发者快速生成模拟数据,减少前后端联调的时间。通过掌握其基本语法和用法,可以大大提高开发效率。