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的完整攻略,希望对大家有用。

阅读剩余 78%

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

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

相关文章

  • .Net报表开发控件XtraReport介绍

    .Net报表开发控件XtraReport介绍 什么是XtraReport XtraReport是DevExpress公司提供的一种报表开发控件,它可以在Winform、WPF及ASP.NET应用程序中使用,该控件还提供了大量的报表设计器工具,方便用户定制自己的报表风格。 使用XtraReport 1. 导入控件库 在使用XtraReport前,我们需要导入D…

    other 2023年6月27日
    00
  • Docker部署nginx并修改配置文件的实现方法

    下面我将详细讲解“Docker部署nginx并修改配置文件的实现方法”的完整攻略。这个攻略分为以下几个步骤: 安装Docker:这是部署nginx的前置步骤。Docker是一个开源的容器引擎,可以用来快速构建、部署和测试应用程序。在安装Docker的过程中,我们需要先安装Docker Engine和Docker Compose两个组件。 下载nginx镜像:…

    other 2023年6月25日
    00
  • windows下es安装教程

    Windows下Elasticsearch安装教程的完整攻略 Elasticsearch是一种开源的分布式搜索和分析引擎,可以用于处理大量数据。以下是Windows下Elasticsearch安装教程的完整攻略: 步骤1:下载Elasticsearch 首先,需要从Elasticsearch官网下载Elasticsearch。可以使用以下链接下载最新版本的E…

    other 2023年5月9日
    00
  • js添加style

    JS 添加 Style 在 Web 开发中,我们经常需要使用 JavaScript 动态地添加样式。本文将介绍如何使用 JavaScript 添加 Style,包括基本概念、应用场景、实现方法和示例说明。 基本概念 在 Web 开发中,我们可以使用 JavaScript 动态地添加样式。通过添加样式,我们可以改变元素的外观、布局和行为。在 JavaScrip…

    other 2023年5月6日
    00
  • C语言新建临时文件和临时文件名的方法

    C语言新建临时文件和临时文件名的方法 在C语言中,新建临时文件或获取临时文件名是非常常见的操作。本文将介绍如何在C语言中进行这些操作。 新建临时文件 新建临时文件可以使用标准库函数tmpfile()。该函数会在临时目录下创建一个新文件,并用读写模式打开文件。在程序结束后,文件会自动删除。 以下是一个使用tmpfile()函数创建临时文件的示例: #inclu…

    other 2023年6月26日
    00
  • PHP 7.4中使用预加载的方法详解

    PHP 7.4是目前PHP最新的稳定版本,它带来了很多新的特性和改进。其中一个重要的特性就是预加载。本文将详细讲解PHP 7.4中使用预加载的方法,包括什么是预加载、为什么要使用预加载、如何使用预加载和示例代码。 什么是预加载? 在PHP 7.4中,预加载是一种机制,它可以在运行PHP应用程序之前,提前将需要用到的类或函数加载到内存中。这样,当应用程序需要使…

    other 2023年6月25日
    00
  • 微信公众号订阅号以及服务号通过网页授权获取用户openid方法

    微信公众号订阅号以及服务号通过网页授权获取用户openid方法 微信公众号订阅号以及服务号通过网页授权获取用户openid是一种常见的做法,可以帮助网站站长了解其用户的基本信息,并将其进行归类和分析。在本文中,我们将详细介绍微信公众号订阅号以及服务号通过网页授权获取用户openid的方法。 什么是openid openid是用户在不同网站上使用的唯一标识符,…

    其他 2023年3月29日
    00
  • 基于nginx获取代理服务ip以及客户端真实ip详解

    这里是详细的攻略: 1. 需求背景 在实际的开发中,有时候需要获取客户端的真实IP,但是访问我们的网站的时候使用的是代理服务,那么在这种情况下如何获取真实IP呢?这就需要基于Nginx来实现。 2. 实现方法 Nginx提供了一个变量$proxy_protocol_addr,它能够获取代理服务的IP地址。在Nginx中使用如下配置: set_real_ip_…

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