Mock 数据

Mock 数据是前端开发过程中必不可少的一环,是分离前后端开发的关键链路。通过预先跟服务器端约定好的接口,模拟请求数据甚至逻辑,能够让前端开发独立自主,不会被服务端的开发所阻塞。

约定式 Mock 文件

Umi 约定 src/mock 文件夹下所有文件为 mock 文件。

比如:

  1. .
  2. └── src
  3. ├── mock
  4. ├── api.ts
  5. └── users.ts
  6. └── pages
  7. └── index.tsx

src/mock 下的 api.tsusers.ts 会被解析为 mock 文件。

编写 Mock 文件

如果 src/mock/api.ts 的内容如下,

  1. export default {
  2. // 支持值为 Object 和 Array
  3. 'GET /api/users': { users: [1, 2] },
  4. // GET 可忽略
  5. '/api/users/1': { id: 1 },
  6. // 支持自定义函数,API 参考 express@4
  7. 'POST /api/users/create': (req, res) => {
  8. // 添加跨域请求头
  9. res.setHeader('Access-Control-Allow-Origin', '*');
  10. res.end('ok');
  11. },
  12. }

然后访问 /api/users 就能得到 { users: [1,2] } 的响应,其他以此类推。

配置 Mock

详见配置#mock

如何关闭 Mock?

可以通过配置关闭,

  1. export default {
  2. mock: false,
  3. };

也可以通过环境变量临时关闭,

  1. $ MOCK=none umi dev

引入 Mock.js

Mock.js 是常用的辅助生成模拟数据的三方库,借助他可以提升我们的 mock 数据能力。

比如:

  1. import mockjs from 'mockjs';
  2. export default {
  3. // 使用 mockjs 等三方库
  4. 'GET /api/tags': mockjs.mock({
  5. 'list|100': [{ name: '@city', 'value|1-100': 50, 'type|0-2': 1 }],
  6. }),
  7. };