• vue3后台管理框架之Mock开发


    前言

    在前后端对接中,有时后端的接口数据没有 那么快能给出,因此我们可以通过mock模拟自己的请求数据,在后端接口没有给出的同时,先使用mock请求的数据完成前端相关的逻辑

    官方文档:vite-plugin-mock

    vite 的数据模拟插件,是基于 vite.js 开发的。 并同时支持本地环境和生产环境。 Connect 服务中间件在本地使用,mockjs 在生产环境中使用

    安装依赖

    pnpm add vite-plugin-mock@2.9.6 mockjs@1.1.0 -D

    配置

    新建mock测试文件 mock/example.ts

    1. export default [
    2. {
    3. url: '/mock/getMapInfo',
    4. method: 'get',
    5. response: () => {
    6. return {
    7. code: 200,
    8. title: 'mock请求测试'
    9. }
    10. }
    11. }
    12. ]

    如果是mock的请求,建议大家以 /mock 开头

    vite.config.js

    1. //vite.config.js
    2. import { viteMockServe } from 'vite-plugin-mock'
    3. plugins: [
    4. vue(),
    5. viteMockServe({
    6. supportTs: true, //是否开启支持ts
    7. mockPath: 'mock', //设置mockPath为根目录下的mock目录,为根目录
    8. localEnabled: command === 'serve', //设置是否监视mockPath对应的文件夹内文件中的更改
    9. prodEnabled: true, //prod环境下是否可以使用mock
    10. logger: true //是否在控制台显示请求日志
    11. })
    12. ],

    此时 开发环境的mock 已经配置好了,如果需要配置生产环境还需要下面的配置

    使用

    当然了我们需要先下载axios依赖

    pnpm add axios@0.21.3 -S

    src/views/dashboard/index.vue

    1. <script setup>
    2. import axios from 'axios'
    3. const listReq = () => {
    4. axios.get('/mock/getMapInfo').then((res) => {
    5. if (res.data) {
    6. console.log(res.data)
    7. alert(res.data.title)
    8. }
    9. })
    10. }
    11. script>
    测试
    1. <template>
    2. <div class="box">
    3. <el-button type="primary" size="default" :icon="Check">朱啊el-button>
    4. <h1>11111h1>
    5. <SvgIcon name="phone" />
    6. div>
    7. <div class="test">11111div>
    8. <button @click="listReq">listReqbutton>
    9. template>
    10. <style scoped lang="scss">
    11. .test {
    12. background-color: $base-background;
    13. width: 100px;
    14. height: 100px;
    15. }
    16. .box {
    17. width: 200px;
    18. height: 200px;
    19. background-color: beige;
    20. h1 {
    21. color: red;
    22. }
    23. }
    24. style>

    模拟用户数据接口

    在mock文件夹内部创建一个user.ts文件

    1. //用户信息数据
    2. function createUserList() {
    3. return [
    4. {
    5. userId: 1,
    6. avatar:
    7. 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
    8. username: 'admin',
    9. password: '111111',
    10. desc: '平台管理员',
    11. roles: ['平台管理员'],
    12. buttons: ['cuser.detail'],
    13. routes: ['home'],
    14. token: 'Admin Token',
    15. },
    16. {
    17. userId: 2,
    18. avatar:
    19. 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
    20. username: 'system',
    21. password: '111111',
    22. desc: '系统管理员',
    23. roles: ['系统管理员'],
    24. buttons: ['cuser.detail', 'cuser.user'],
    25. routes: ['home'],
    26. token: 'System Token',
    27. },
    28. ]
    29. }
    30. export default [
    31. // 用户登录接口
    32. {
    33. url: '/api/user/login',//请求地址
    34. method: 'post',//请求方式
    35. response: ({ body }) => {
    36. //获取请求体携带过来的用户名与密码
    37. const { username, password } = body;
    38. //调用获取用户信息函数,用于判断是否有此用户
    39. const checkUser = createUserList().find(
    40. (item) => item.username === username && item.password === password,
    41. )
    42. //没有用户返回失败信息
    43. if (!checkUser) {
    44. return { code: 201, data: { message: '账号或者密码不正确' } }
    45. }
    46. //如果有返回成功信息
    47. const { token } = checkUser
    48. return { code: 200, data: { token } }
    49. },
    50. },
    51. // 获取用户信息
    52. {
    53. url: '/api/user/info',
    54. method: 'get',
    55. response: (request) => {
    56. //获取请求头携带token
    57. const token = request.headers.token;
    58. //查看用户信息是否包含有次token用户
    59. const checkUser = createUserList().find((item) => item.token === token)
    60. //没有返回失败的信息
    61. if (!checkUser) {
    62. return { code: 201, data: { message: '获取用户信息失败' } }
    63. }
    64. //如果有返回成功信息
    65. return { code: 200, data: {checkUser} }
    66. },
    67. },
    68. ]

  • 相关阅读:
    基于k8s、rancher的集群kubectl容器命令行的功能实现
    深度学习——day19 读论文:基于改进 Sigmoid 卷积神经网络的手写体数字识别(2021 信息科技)
    Leetcode.174 地下城游戏
    Java第6章 类的多态
    基于github上go版本的LoraWAN Server安装及使用
    设计模式-组合模式(Composite)
    opcache导致的RCE复现
    Ceph IO流程及数据分布
    【LeetCode 力扣】3.无重复字符的最长子串 Java实现 滑动窗口
    js 闭包:概念-用途-弊端
  • 原文地址:https://blog.csdn.net/m0_52704461/article/details/133849894