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

yizhihongxing

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日

相关文章

  • Windows Server 2019 网络负载均衡服务配置与管理(理论+网络拓扑及说明)

    Windows Server 2019网络负载均衡服务(Network Load Balancing,简称NLB)可以将多个计算机上同一服务的流量分布到一组服务器上,从而提高服务的稳定性和可用性。下面,将为大家详细讲解Windows Server 2019 NLB服务的配置与管理: 1. 理论知识 1.1 NLB基础概念 Windows Server 201…

    other 2023年6月27日
    00
  • Java是如何实现平台无关性的

    Java是如何实现平台无关性的 Java是一种高级编程语言,经过多年的发展,如今已经成为了全球最流行的编程语言之一。其中最为著名的特点就是平台无关性,也就是说,Java程序可以运行在任何支持Java虚拟机(JVM)的平台上,例如Windows、Linux和Mac OS等。 Java语言之所以能够实现平台无关性,是因为它的编译过程与其他语言有所不同。一般来说,…

    其他 2023年3月28日
    00
  • xiv存储操作

    xiv存储操作 在使用xv6操作系统时,实现文件系统的存储是非常重要的。在xv6中,我们使用文件系统的存储方式来存储文件和目录。本文将介绍如何进行xiv存储操作。 创建文件和目录 我们可以使用 mkdir 命令来创建目录。例如: mkdir test_folder 我们也可以使用 touch 命令来创建文件。例如: touch test.txt 查看文件和目…

    其他 2023年3月28日
    00
  • 安卓序列化漏洞 —— CVE-2015-3525

    安卓序列化漏洞 —— CVE-2015-3525 什么是序列化漏洞? 序列化是将对象转换为字节流的过程,便于进行网络传输或存储。而序列化漏洞则是指在对象反序列化时候,由于缺少足够的校验和过滤,导致攻击者可以通过构造恶意数据来实现远程代码执行、拒绝服务等攻击方式。 在实际应用中,序列化漏洞主要出现在Java和.NET等语言中,而安卓序列化漏洞也是针对Java序…

    其他 2023年3月28日
    00
  • JS的IE和Firefox兼容性集锦

    JS的IE和Firefox兼容性集锦攻略 1. 了解IE和Firefox的差异 在编写JavaScript代码时,了解IE和Firefox之间的差异是至关重要的。以下是一些常见的差异点: DOM访问方式:IE使用document.all来访问DOM元素,而Firefox使用document.getElementById等标准方法。 事件处理:IE使用atta…

    other 2023年8月15日
    00
  • php之50个开源项目

    PHP之50个开源项目 PHP是一种广泛应用于Web开发领域的脚本语言,其开源和封装的能力使得它成为了许多商业应用的选择。在这篇文章中,我们将会介绍50个优秀的开源PHP框架、工具和库,这些项目有助于Web开发的复杂性和困难,并为开发人员提供更好的工作效率和代码复用性。 1. Laravel Laravel是当今最流行的PHP框架之一,它允许开发人员使用简单…

    其他 2023年3月29日
    00
  • springboot vue测试列表递归查询子节点下的接口功能实现

    让我详细讲解一下“springboot vue测试列表递归查询子节点下的接口功能实现”的完整攻略。 简介 这里的需求是实现一个树形结构的列表,需要递归查询子节点及子节点的子节点,同时进行测试和使用Vue作为前端开发框架,Spring Boot作为后端开发框架。 实现步骤 1. 数据库设计 首先,需要设计数据库。我们可以创建一个树形结构的表,用来保存节点之间的…

    other 2023年6月27日
    00
  • laravel config文件配置全局变量的例子

    当使用Laravel框架时,可以使用config文件来配置全局变量。下面是一个详细的攻略,包含两个示例说明。 步骤1:创建配置文件 首先,我们需要创建一个配置文件来存储全局变量。在Laravel中,配置文件位于config目录下。可以使用以下命令创建一个新的配置文件: php artisan make:config custom 这将在config目录下创建…

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