现代化前端 Mock 数据的方案(MSW+faker.js)

前言

目前前端模拟数据除了通过一些接口调试工具来mock以外,偶尔使用express、nest之类,主要是用mock.js和better-mock,这两个本质是一个东西,后者是因为前者不维护而诞生出的一个分支,支持typescript。本文主要讲另外一种方式,就是通过msw和faker.js实现模拟。msw全称Mock Service Worker,是通过Worker实现的mock模拟前端接口返回。本方式相对来说比较新,也比较优雅。

基础配置

一、官网

MSW – Seamless API mocking library for browser and Node | Mock Service Worker

二、安装

npm install msw --save-dev
# or
yarn add msw --dev

根据npm还是yarn包管理工具进行安装。

三、配置mock列表(./mock/handlers.js)

以下是我添加了单个的mock,实际上,你可以创建多个,方法是rest.post/get等..

req代表请求、res代表返回、ctx代表环境上下文(请求的一些数据)

import { rest } from 'msw'


export const handlers = [
rest.post('/login', async (req, res, ctx) => {
    const { username } = await req.json()

    return res(
        ctx.status(200),
        ctx.delay(1000),
        ctx.json({
        username,
        firstName: 'John'
      })
    )
  }),]

通过ctx.status()可以设置接口返回状态码、通过ctx.delay()可以实现接口延迟,比如弱网测试

四、生成worker脚本

通过cli生成必要的依赖文件到public目录下。

npx msw init <PUBLIC_DIR> --save

这里PUBLIC_DIR就是我们public文件夹的路径,Vite为public(绝大多数框架都是public)

./public

所以,命令是

npx msw init public/ --save

五、创建浏览器的worker

我们要测试是浏览器的环境,所以说需要创建一个浏览器worker:browser.js

// src/mocks/browser.js
import { setupWorker } from 'msw'
import { handlers } from './handlers'

export const worker = setupWorker(...handlers)

六、引入main.js下进行挂载

if (import.meta.env.MODE === 'development') {
  const { worker } = await import("./mock/browser");
  worker.start()
}

七、检查msw集成结果

控制台输出以下内容,代表msw启动成功

[MSW] Mocking enabled

faker.js集成

一、安装依赖和导入

npm install --save-dev @faker-js/faker


import { faker } from '@faker-js/faker';

二、使用简单的方法 

export const handlers = [
rest.post('/login', async (req, res, ctx) => {
    const { username } = await req.json()

    return res(
        ctx.status(200),
        ctx.delay(1000),
        ctx.json({
        username,
        firstName: faker.internet.userName()
      })
    )
  }),]

有关faker.js更多API请直接访问faker的git页面,查询。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mock.js可以动态生成各种类型的数据,包括数字、字符串、布尔值、数组、对象等等。以下是使用Mock.jsmock动态生成数据的步骤: 1. 安装Mock.js 可以通过npm安装Mock.js,命令如下: ``` npm install mockjs ``` 也可以在HTML文件中直接引用Mock.js的CDN链接: ``` <script src="https://cdn.bootcdn.net/ajax/libs/Mock.js/1.0.1-beta3/mock-min.js"></script> ``` 2. 定义Mock数据模板 Mock.js的核心是数据模板,它是一个JavaScript对象,用来描述Mock数据的结构和类型。例如,以下是一个简单的Mock数据模板: ``` var data = { name: '@cname', // 随机生成中文名字 age: '@integer(18, 60)', // 随机生成18到60之间的整数 gender: '@boolean', // 随机生成布尔值 hobbies: ['@word', '@word', '@word'] // 随机生成三个英文单词组成的数组 }; ``` 3. 使用Mock数据模板生成Mock数据 使用Mock.js的`Mock.mock()`方法可以根据数据模板生成Mock数据,例如: ``` var mockData = Mock.mock(data); ``` `mockData`就是根据`data`模板生成的Mock数据。 4. 使用Mock数据 生成Mock数据后,可以将其用于测试、演示或其他目的。例如,将Mock数据渲染到页面中: ``` document.getElementById('name').innerHTML = mockData.name; document.getElementById('age').innerHTML = mockData.age; document.getElementById('gender').innerHTML = mockData.gender ? '男' : '女'; document.getElementById('hobbies').innerHTML = mockData.hobbies.join(', '); ``` 以上就是使用Mock.jsmock动态生成数据的基本步骤。Mock.js还支持更多高级功能,例如数据占位符、数据生成规则、拦截Ajax请求等等,可以根据需要进行学习和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值