MockJs

本文介绍如何使用MockJS在前后端分离开发中模拟数据,包括基本用法、数据模板定义及常见随机生成函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MockJS

为什么使用它:

1.[前后端分离],有时候后端开发比前端慢我们开发完成后端接口还没写好,这个时候前端就可以自己模拟数据测试
2.可生成你需要的随机数据
3.用法简单
4.在后端接口完成之后,只需要改变url请求地址即可。

整体的使用规则

官方文档 http://mockjs.com/

@/Mock/index.js文件

函数一:Mock.mock(参数一:拦截的请求地址, 参数二:需要拦截的请求类型,参数三:生成的响应数据的函数)

import Mock from "mockjs"

// 方法一:指定请求方式
// 为什么使用双层的Mock?
// 因为外层的Mock是拦截ajax请求的,里面的Mock是模拟假数据的

Mock.mock('/api/login','get',function(option){
    //option是相关的请求参数,一般我们post传参的时候可以打印一下看一下是不是传的正确
    console.log(option);
    return Mock.mock({
        "data|10":[{
            // 自定义的数据
            name:"@cname",//随机的中文名

        }
        ]
    })
})
// 方法二 不规定请求方式,post或get均可使用,推荐这种方式
Mock.mock( '/api/login', 
     Mock.mock({
        "data|10":[{
            // 自定义的数据
            name:"@cname",//随机的中文名

        }
        ]
    })
)

写好这个文件,但是我们要将这个文件运行起来,这样就是在main.js中引入这个文件

import ./Mock/index.js

此外使用mockjs前还要将axios挂载到Vue原型上(post与get都要进行)

import axios from 'axios';
Vue.prototype.$axios = axios;

然后我们在拦截的地址页面上编写 请求对应的url即可,请求的方式也要对应起来

<template>
    <div>
        <button @click="login">登录</button>
    </div>
</template>

<script setup>
const login = async()=>{
    const {data} = await this.$axios.get('/api/login')
    console.log(data)
    }
</script>

<style lang="scss" scoped>

</style>
对于地址是动态变化的地址,我们可以使用正则地址来模拟
// url为:/api/get/list?pageindex=1&pagesie=10
// 无法与/api/get/list匹配,因此要用到正则,这个的意思就是包含/api/get/list的地址即可,\为转移字符
Mock.mock(/\/api\/get\/list/,'get',(options)=>{
    console.log(options)   //业务代码省略
})

数据模板的定义

  1. 数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:。写法如下:

‘name|rule’: value // ‘属性名|生成规则’:属性值

2.数据占位符的定义规范,占位符只在属性值字符串中占个位置,并不出现最终的属性值中,格式为

@占位符
@占位符(参数 [, 参数])

Mock.Random随机生成函数

这些函数在使用的时候,前面加上@

id:"@increase(1)"  //生成一个全局的自增整数。
name:"@cword(2,6)" //随机生成一个2~8个字的中文文本

相关的函数可以去官网上去看

在这里插入图片描述

常用的一些语法

  // 自动生成20条数据
  "data|20": [{
    // 从ID为1开始,每条数据ID自动加1
    "ID|+1": 1,
    // 随机生成一个中文名-->俊怡
    'name': "@cname",
    // 随机生成数组中的1项-->房产消费
    'type|1': ["汽车消费","房产消费","抵押贷款"],
    // 随机生成5-20个中文-->次几委数没百电报个者料完改从
    'text|5-20': '@cword',
    // 随机生成一个范围0-10的数字-->6
    'account|0-10': 1,
    // 随机生成一个日期时间-->"1975-10-27 00:44:40"
    "date":"@date('yyyy-MM-dd HH:mm:ss')"
    // 随机生成一个日期-->"1975-10-27"
    "date":"@date"
    // 随机生成一个大小100×100,颜色随机,格式为png的图片地址
    "imgUrl": "@Image('100x100','@color','png')",
    // 随机生成一个邮箱:
    "email": "@email",
    // 随机生成一个颜色-->#79f2e3
    "color": "@color",
    // 随机生成一个布尔值-->true
    "is": "@boolean",
    // 随机生成一个英文名-->Helen Brown
    "name": "@name",
    // 随机生成十个中文组成的标题
    "title": "@ctitle(10)",
    // 随机生成一个中国大区
    "cregion":"@region",
    // 随机生成一个省
    "cprovince":"@province",
    // 随机生成一个市
    "ccity":"@city",
    // 随机生成一个县
    "country":"@county",
    // 随机生成一个省 + 市
    "ss":"@city(true)",
    // 随机生成一个省市县-->"陕西省 商洛市 山阳县"
    "countrysx":"@county(true)",
  	//随机生成邮政编码
    "code":"@zip"
  }]
### 如何使用 Mock.js 进行数据模拟 #### 安装 Mock.js 库 为了能够在项目中使用 Mock.js,首先需要安装该库。可以通过 npm 或者 yarn 来安装: ```bash npm install mockjs --save-dev ``` 或者 ```bash yarn add mockjs --dev ``` #### 配置 Mock 数据文件 在 Vue 项目的 `src` 文件夹下创建一个新的名为 `mock` 的目录,并在此目录内建立一个 JavaScript 文件用于配置所有的 API 模拟逻辑。 ```javascript // src/mock/index.js import Mock from 'mockjs'; const data = Mock.mock({ 'list|1-10': [{ 'id|+1': 1, 'name': '@cname', 'age|18-60': 1 }] }); Mock.mock('/api/users', 'get', () => { return { code: 200, message: 'success', result: data.list }; }); ``` 这段代码定义了一个简单的用户列表接口 `/api/users` ,它会返回一组由 Mock.js 自动生成的数据[^1]。 #### 导入 Mock 到主程序入口处 为了让整个应用程序能够识别到这些模拟的 API 路径,在 main.js 中引入刚刚创建好的 index.js 文件即可让其生效。 ```javascript // src/main.js import './mock'; // 加载mock服务 ... new Vue({...}) ``` 通过这种方式设置后,当发起 GET 请求至 `/api/users` 地址时就会触发上述自定义的响应处理函数。 #### Axios 实践中的应用 如果正在使用的 HTTP 工具是 axios,则可以进一步优化以确保每次请求都能被拦截下来并通过 Mock 处理。可以在 axios 默认配置里加入如下所示的内容: ```javascript // src/utils/axios.js import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; import { userLogin } from '../mock/api'; const instance = new axios.create(); if (process.env.NODE_ENV === 'development') { let mock = new MockAdapter(instance); mock.onPost('/login').reply(config => { return Promise.resolve([200, userLogin()]); }); } export default instance; ``` 这里展示了如何利用 `MockAdapter` 对象来监听特定 URL 并给予预设的回答。注意这里的条件判断是为了保证只在开发环境中启用此功能[^3]。 #### 总结与优势分析 采用 Mock.js 不仅可以让前端开发者摆脱对于实际服务器环境依赖的问题,而且还可以轻松实现各种复杂场景下的测试需求。由于支持多种类型的动态生成机制以及良好的兼容性和易用性等特点使得这项技术成为现代 Web 开发过程中不可或缺的一部分[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值