vite+vue3中使用mock模拟数据问题

vite+vue3的开发中,我们希望在开发过程中使用mock数据进行测试,而不是依赖于后端API接口。这样可以在不影响后端开发的情况下,快速开发并测试前端页面。在这里,我们提供一个完整的攻略,介绍如何在vite+vue3中使用mock模拟数据。

1. 安装mockjs

首先,在项目根目录下,使用npm或者yarn安装mockjs:

npm install mockjs --save-dev

# 或者

yarn add mockjs --dev

2. 创建mock数据

在根目录下,创建一个mock文件夹,并在其中创建一个user.js文件,用于模拟用户数据:

import Mock from 'mockjs'

const users = []
for (let i = 0; i < 10; i++) {
  users.push(Mock.mock({
    id: Mock.Random.guid(),
    name: Mock.Random.cname(),
    age: Mock.Random.integer(20, 50),
    address: Mock.mock('@county(true)'),
    time: Mock.Random.datetime()
  }))
}

export default {
  userList: users
}

这个文件导出了一个userList数组,包含了10个用户数据,用Mock.js随机生成了各种数据类型。

3. 使用mock数据

在Vue3的组件中,使用fetch获取mock数据:

<script>
export default {
  data() {
    return {
      userList: []
    }
  },
  mounted() {
    fetch('/api/userList')
      .then((response) => response.json())
      .then((result) => {
        this.userList = result.userList
      })
  }
}
</script>

这里我们使用/fetch来获取数据,这个路径是手动实现的,只要保证和mock数据文件user.js导出的路径相同即可。

4. 配置mock数据

在vite.config.js文件中,设置代理和路由规则:

import { createServer } from 'vite'
import { readFileSync } from 'fs'
import { resolve } from 'path'
import userMock from './mock/user'

function serveMock() {
  const server = createServer({
    server: {
      middlewareMode: true
    }
  })

  server.use((req, res, next) => {
    if (req.url.endsWith('.js')) {
      const file = readFileSync(resolve(process.cwd(), `./src${req.url}`), 'utf-8')
      res.end(file)
    } else {
      next()
    }
  })

  server.get('/api/userList', (req, res) => {
    res.json({
      code: 200,
      data: userMock.userList
    })
  })

  server.listen(3200)
}

serveMock()

export default {
  optimizeDeps: {
    include: [
      'mockjs',
      'path-to-regexp'
    ]
  }
}

这里我们使用vite的createServer方法创建了一个server,使用use方法根据请求路径返回mock数据。在vite.config.js中导出的默认配置中,通过optimizeDeps选项包含了需要的依赖,这样vite会正确的分析并执行mockjs的代码。

示例

下面提供两个示例,演示如何使用mockjs模拟每日一文和音乐列表的数据:

每日一文

首先,我们需要在mock文件夹中创建一个daily.js文件,用来模拟每日一文的数据:

import Mock from 'mockjs'

const content = Mock.Random.paragraph(6)
const author = Mock.Random.cname()
const title = Mock.Random.ctitle(10, 32)

export default {
  daily: {
    content,
    author,
    title
  }
}

然后,在vite.config.js中增加一个路由规则:

server.get('/api/daily', (req, res) => {
  res.json({
    code: 200,
    data: dailyMock.daily
  })
})

最后,在Vue3的组件代码中使用fetch获取数据即可:

<script>
export default {
  data() {
    return {
      daily: {}
    }
  },
  mounted() {
    fetch('/api/daily')
      .then((response) => response.json())
      .then((result) => {
        this.daily = result.data
      })
  }
}
</script>

音乐列表

首先,我们需要在mock文件夹中创建一个music.js文件,用来模拟音乐列表的数据:

import Mock from 'mockjs'

const musicList = []
for (let i = 0; i < 10; i++) {
  musicList.push(Mock.mock({
    id: Mock.Random.guid(),
    name: Mock.Random.ctitle(4, 16),
    singer: Mock.Random.cname(),
    album: Mock.Random.ctitle(8, 16),
    duration: Mock.Random.integer(120, 600),
    cover: Mock.Random.image(),
    url: Mock.Random.url()
  }))
}

export default {
  musicList
}

然后,在vite.config.js中增加一个路由规则:

server.get('/api/musicList', (req, res) => {
  res.json({
    code: 200,
    data: musicMock.musicList
  })
})

最后,在Vue3的组件代码中使用fetch获取数据即可:

<script>
export default {
  data() {
    return {
      musicList: []
    }
  },
  mounted() {
    fetch('/api/musicList')
      .then((response) => response.json())
      .then((result) => {
        this.musicList = result.data
      })
  }
}
</script>

这就是vite+vue3集成mockjs的完整攻略,希望对大家有用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vite+vue3中使用mock模拟数据问题 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Shell脚本创建指定大小文件的测试数据

    Shell脚本创建指定大小文件的测试数据攻略 有时候我们需要创建一些指定大小的测试数据文件,以便进行性能测试或其他目的。下面是使用Shell脚本创建指定大小文件的详细攻略: 确定文件大小:首先,确定您想要创建的文件的大小。可以使用以下命令将文件大小转换为字节: bash size_in_bytes=$((desired_size * 1024 * 1024)…

    other 2023年10月18日
    00
  • MySQL递归查找树形结构(这个方法太实用了!)

    MySQL递归查找树形结构攻略 背景 在实际开发中,往往会遇到需要处理树形结构的需求,而且这些树形结构往往是多层嵌套的。在MySQL中,我们可以通过递归查询的方式来处理树形结构数据,本文将会详细介绍如何使用MySQL来实现递归查询树形结构数据的方法,并提供两个示例说明。 算法思路 递归查询树形结构的整个算法过程主要可以分为以下几步: 查询根节点数据,即根节点…

    other 2023年6月27日
    00
  • base64之js压缩图片

    base64之js压缩图片 在Web开发中,图像文件传输占据了极大的带宽。为此,我们可以使用一些方法来减少图像传输的大小。其中,将图像压缩为base64编码字符串并将其添加到HTML或CSS文件中是一种常见的方法。在这篇文章中,我们将学习如何使用JavaScript对图像进行压缩,并将其转换为base64编码字符串以缩小文件的大小。 为什么要使用base64…

    其他 2023年3月28日
    00
  • visual studio 2013 update3下载地址 vs2013 update3 正式版下载

    Visual Studio 2013 Update 3 下载攻略 Visual Studio 2013 Update 3 是一个重要的更新版本,它提供了许多修复和改进,以增强开发者的体验。以下是详细的下载攻略: 步骤 1:访问官方网站 首先,你需要访问 Visual Studio 官方网站以获取 Visual Studio 2013 Update 3 的下载…

    other 2023年8月5日
    00
  • Java实现按照大小写字母顺序排序的方法

    Java实现按照大小写字母顺序排序的方法 在Java中,可以使用java.util.Collections类的sort方法来按照大小写字母顺序对字符串进行排序。下面是一个完整的攻略,包含了两个示例说明。 示例1:对字符串数组进行排序 import java.util.Arrays; import java.util.Collections; public c…

    other 2023年8月17日
    00
  • ThinkPHP中__initialize()和类的构造函数__construct()用法分析

    当使用ThinkPHP框架进行开发时,我们会遇到__initialize()和__construct()两个方法。它们都是在对象创建时自动调用,但是它们的作用和用法是不同的。 一、__initialize()方法 __initialize()是ThinkPHP框架创建控制器类对象时自动调用的一个方法。这个方法的主要用途是在对象创建时执行一些初始化操作,比如设…

    other 2023年6月26日
    00
  • JS中数组重排序方法

    标题:JS中数组重排序方法的完整攻略 1. sort()方法 sort()方法是JS中内置的数组排序方法,它会将数组中的元素按照一定的规则进行排序。sort()方法默认按照Unicode编码的顺序进行排序,即使对于数字类型的元素,也会按照字符的顺序进行排序。 1.1 基本用法 sort()方法可以直接作用于数组对象,无需额外的参数。 let arr = [3…

    other 2023年6月25日
    00
  • sqlservercharindex函数和patindex函数详解

    SQL Server CharIndex函数和PatIndex函数详解 在SQL Server中,CharIndex函数和PatIndex函数都是用于查找字符串中某个子字符串的位置。本攻略将详细介绍两个函数的用法和示例。 CharIndex函数 CharIndex函数用于查找字符串中某个子字符串的位置。以下是CharIndex函数的语法: CHARINDEX…

    other 2023年5月6日
    00
合作推广
合作推广
分享本页
返回顶部