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日

相关文章

  • docker-“dockerstats”命令显示cpu超过100%

    Dockerstats命令显示CPU超过100%的完整攻略 当使用Dockerstats命令查看容器的资源使用情况时,有时会发现CPU使用率超过100%的情况。本文将详细介绍这种情况的原因和解决方法,并提供两个示例说明,以帮助您更好地理解和应用这些技术。 原因 当Dockerstats命令显示CPU使用率超过100%时,通常是由于以下原因之一: 容器中运行的…

    other 2023年5月7日
    00
  • 太吾绘卷更新后卡顿怎么办 更新后卡顿原因及解决方法介绍

    太吾绘卷更新后卡顿怎么办? 如果你在新的太吾绘卷更新后游戏出现了卡顿,可能是由于以下原因: 系统配置不足; 游戏设置过高; 游戏更新时出现了异常; 游戏文件损坏; 电脑中存在病毒或恶意软件。 接下来详细介绍解决方法: 方法一:检查系统配置 首先检查一下你的电脑是否满足游戏的要求。太吾绘卷官方要求电脑的系统为Windows 7以上,需要内存4GB及以上。如果你…

    other 2023年6月27日
    00
  • numpy由float转换为int 取最近的整数

    NumPy由float转换为int取最近的整数攻略 在NumPy中,可以使用astype()函数将float类型的数组转换为int类型的数组,并取最近的整数。本攻略中,我们将详细介绍如何使用astype()函数将float类型数组转为int类型的数组,并取最近的整数。 步骤1:创建float类型的数组 在使用astype()函数将float类型的数组换为in…

    other 2023年5月6日
    00
  • java子类调用父类的方法中包含子类重写的实例方法

    当Java的子类重写了父类的实例方法时,我们可以使用关键字super来调用父类中的这个方法。但是,如果父类的方法中包含了子类重写的实例方法,我们该怎么调用呢? 以下是几种方法: 1.使用super关键字和this关键字 我们可以在子类中使用super关键字调用父类的方法,然后再使用this关键字来调用子类的方法。 class Animal { public …

    other 2023年6月26日
    00
  • microsoft+r:microsoftropen(mro)安装和多核运作

    Microsoft R Open (MRO) 是一个开源的 R 语言发行版,由 Microsoft 提供支持。它包含了 R 语言的核心组件以及一些常用的 R 包,同时还提供了一些优化和强功能,如多核并行计算和大数据处理等。本文将介绍如何安装和配置 Microsoft R Open,并使用多核并行计算功能。 步骤一:下载和安装 Microsoft R Open…

    other 2023年5月8日
    00
  • Android使用ContentProvider初始化SDK库方案小结

    下面就详细讲解一下“Android使用ContentProvider初始化SDK库方案小结”。 背景介绍 在很多 Android 应用中,我们往往需要使用第三方 SDK,例如地图 SDK、支付 SDK 等等。由于 SDK 的初始化需要一些必要的参数,而这些参数往往需要在应用启动时进行设置,才能保证后续 SDK 的正常使用。那么,如何在应用启动时方便高效地初始…

    other 2023年6月20日
    00
  • Win10键盘大小写切换怎么设置有声音?

    当你在使用Windows 10操作系统时,你可以通过以下步骤设置键盘大小写切换时的声音: 打开“设置”:点击任务栏上的“开始”按钮,然后点击“设置”图标(齿轮状图标)。 进入“时间和语言”设置:在“设置”窗口中,点击“时间和语言”选项。 进入“区域和语言”设置:在“时间和语言”窗口中,点击左侧导航栏中的“区域和语言”选项。 打开“语言首选项”:在“区域和语言…

    other 2023年8月16日
    00
  • 使用maven命令行下载依赖库

    使用Maven命令行下载依赖库 Maven是一个常用的Java构建工具,可以帮助我们管理项目依赖,并可以自动下载所需的依赖库。通过使用Maven,我们可以节省大量配置和管理时间,提高项目的构建效率。本篇文章将介绍如何通过Maven命令行下载依赖库。 1. 确认Maven已安装 首先我们需要确认Maven是否已经安装。可以在命令行中输入以下命令来检查: mvn…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部