Mock的基本使用

Mock的基本使用

  • 前言
  • 一、官方文档
  • 二、mock的简单使用:
  • 二、搭配 vite 插件使用


前言

通过 Mock 我们可以便捷的生成大量模拟数据,有助于我们在前后端分离的开发模式中前端做网络请求测试。 摆脱后端接口未给出时前端的数据只能自己不断写死数据的窘境; 下面中介绍Mock的基本使用和配合 vite插件实现更真实的请求响应

一、官方文档

1、MockJS

2、vite-plugin-mock

二、mock的简单使用:

项目结构:

mockJS博客
├─ .gitignore
├─ index.html
├─ package-lock.json
├─ package.json
├─ public
├─ README.md
├─ src
│  ├─ App.vue
│  ├─ assets
│  ├─ components
│  ├─ main.ts
│  ├─ mockTeat.ts
│  ├─ style.css
│  └─ vite-env.d.ts
├─ tsconfig.json
├─ tsconfig.node.json
└─ vite.config.ts
  • 安装 Mock
npm i  mockjs -S
  • 创建文件用以存储 mock 数据,以下创建文件 “src/mockTeat.ts” 举例:
import mockJS from "mockjs";

let data = mockJS.mock({
    success: true,
    // 随机生成100条数据,数据中包含id,name(随机中文名),image(随机头像)
    // 更多数据占位符定义规范,可查阅官方文档 MockJS
    "data|100": [
        {
            "id|+1": 0,
            name: "@cname",
            image: mockJS.Random.image(),

        }
    ]
})

// 设置请求接口和请求方法进行拦截响应
mockJS.mock('/api/users', 'post', () => { 
    return data
})

  • 导入 需要做拦截的 响应文件中,以下直接全局导入 main.ts中 举例:
import './mockTeat'
  • 发送请求模拟:
<template>
    <div>
       <button @click="getData()">mock测试button>
    div>
template>

<script setup lang="ts">
import axios from "axios";
const getData =()=>{
  axios.post("/api/users").then(res=>{
    console.log(res);
  })
}
script>
  • 效果:
    Mock的基本使用_第1张图片

注意:mock进行的拦截响应在浏览器的开发工具网络项中是 看不到

二、搭配 vite 插件使用

  • 搭配 “vite-plugin-mock” 使用可以更真实的模拟请求,进行的拦截响应在浏览器的开发工具网络项中 看到

项目结构:

mockJS博客
├─ .gitignore
├─ index.html
├─ mock
│  ├─ mock.ts
│  └─ mockData
│     └─ home.ts
├─ package-lock.json
├─ package.json
├─ public
├─ README.md
├─ src
│  ├─ App.vue
│  ├─ assets
│  ├─ components
│  ├─ main.ts
│  ├─ style.css
│  └─ vite-env.d.ts
├─ tsconfig.json
├─ tsconfig.node.json
└─ vite.config.ts
  • 安装 Mock 与 vite-plugin-mock
npm i  mockjs -S
npm i vite-plugin-mock -D
  • 创建文件用以存储 mock 数据,以下创建文件 “mock” 举例:

1、mock/mockData/home.ts

import mockJS from "mockjs";

export const userList = mockJS.mock({
    success: true,
    "data|100": [
        {
            "id|+1": 0,
            name: "@cname",
            image: mockJS.Random.image(),
        }
    ]
})

2、mock/mock.ts

import { userList } from "./mockData/home";

module.exports = [
    {
        method: "post",
        url: '/api/users',
        response: ({ body }) => {
            return {
                userList
            }
        }
    }
]
  • 在 “vite.config.ts” 中引入并配置插件:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteMockServe } from 'vite-plugin-mock'

export default defineConfig(({ command, mode }) => ({
  plugins: [
    vue(),
    viteMockServe({
      // 设置模拟.ts 文件的存储文件夹
      mockPath: 'mock',  
      // 设置是否启用本地 xxx.ts 文件,不要在生产环境中打开它.设置为 false 将禁用 mock 功能                     
      localEnabled: command === 'serve'      
    })
  ]
}))

  • 发送请求模拟:
<template>
    <div>
       <button @click="getData()">mock测试button>
    div>
template>

<script setup lang="ts">
import axios from "axios";
const getData =()=>{
  axios.post("/api/users").then(res=>{
    console.log(res);
  })
}
script>
  • 效果:
    Mock的基本使用_第2张图片
    Mock的基本使用_第3张图片

提示:文章到此结束,文章仅为个人学习记录,若有不足还请大家指出。

你可能感兴趣的:(前端,javascript,前端,vue.js)