基于vue3的模拟数据mock.js应用

news2024/11/14 14:53:31

一、mock.js介绍

Mock.js 是一个用于生成随机数据,拦截 Ajax 请求的 JavaScript 库。它主要用于前后端分离开发时,模拟后端数据接口,使得前端开发者在不需要后端实际编写接口的情况下,也能进行开发、测试。

1、主要功能

生成随机数据:Mock.js 提供了丰富的 API 来生成各种类型的数据,如字符串、数字、图片、日期等,并且支持自定义模板来生成复杂的数据结构。
拦截 Ajax 请求:Mock.js 可以拦截前端发起的 Ajax 请求,并返回预设的模拟数据,这样前端就可以像调用真实接口一样进行开发。
数据模板:Mock.js 允许你定义数据模板,这些模板可以基于 JSON 格式,但增加了占位符和函数来生成随机数据。

2、使用场景

前后端分离开发:在前端工程师等待后端接口开发完成之前,可以使用 Mock.js 来模拟接口数据,保证开发进度不受影响。
测试:在自动化测试或单元测试中,使用 Mock.js 来模拟外部依赖(如数据库、网络请求等),提高测试的可靠性和速度。
原型开发:在快速原型开发阶段,使用 Mock.js 快速生成数据,展示界面效果。

二、安装

npm install mockjs
npm install axios  需要安装

安装成功后,node_modules下会有
在这里插入图片描述

三、简单应用案例

1、创建文件夹及文件

src \ mock \ index.js

2、src \ mock \ index.js 模拟接口

import Mock from 'mockjs';

// 定义模拟数据接口
Mock.mock('/api/user', 'get', {
  code: 200,
  message: 'success',
  data: {
    'id|1-100': 1,
    'name': '@name',
    'age|20-30': 25,
    'gender|1': ['Male', 'Female'],
    'email': '@email',
  }
});

3、main.js 引入 mock

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import VueI18n from './language'

import './mock' // 引入 Mock.js 配置

createApp(App).use(VueI18n).mount('#app')

4、创建组件 src / components/UserInfo.vue

<template>
  <div>
    <h2>User Information</h2>
    <div v-if="user">
      <p>ID: {{ user.id }}</p>
      <p>Name: {{ user.name }}</p>
      <p>Age: {{ user.age }}</p>
      <p>Gender: {{ user.gender }}</p>
      <p>Email: {{ user.email }}</p>
    </div>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      user: null
    };
  },
  mounted() {
    this.fetchUser();
  },
  methods: {
    async fetchUser() {
      try {
        const response = await axios.get('/api/user');
        this.user = response.data.data;
      } catch (error) {
        console.error('Failed to fetch user data:', error);
      }
    }
  }
};
</script>

5、app.vue 加载组件

<template>
 <UserInfo />
</template>

<script setup>
import HelloWorld from './components/HelloWorld.vue'
import UserInfo from './components/UserInfo.vue';

</script>

控制台:npm run dev 运行
在这里插入图片描述
刷新,数据随机不同

四、数据生成规则

1 数字生成

你可以通过 Mock.js 生成各种范围和步长的数字:

const data = Mock.mock({
  'number|1-100': 1,      // 生成1到100之间的随机整数
  'float|1-100.1-10': 1.1 // 生成1到100之间的随机浮点数,保留1到10位小数
});

console.log(data);

输出示例:

{
  "number": 57,
  "float": 83.231
}

2 字符串生成

mock.js 提供了丰富的字符串生成规则:

const data = Mock.mock({
  'string|1-10': '★',         // 重复生成1到10个'★'字符
  'title': '@title',          // 生成一个随机标题
  'paragraph': '@paragraph',  // 生成一个随机段落
  'sentence': '@sentence'     // 生成一个随机句子
});

console.log(data);

输出示例:

{
  "string": "★★★★",
  "title": "Laboris pariatur in.",
  "paragraph": "Deserunt cillum minim...",
  "sentence": "Id cupidatat ut."
}

3 布尔值生成

你可以生成随机布尔值:

const data = Mock.mock({
  'boolean|1': true,   // 生成一个布尔值(true 或 false)
  'boolean2|1-2': true // 生成布尔值,true 的概率为 1/(1+1)
});

console.log(data);

输出示例:

{
  "boolean": false,
  "boolean2": true
}

4 对象生成

你可以使用 mock.js 生成包含随机属性的对象:

const data = Mock.mock({
  'object|2': {         // 从属性中随机选取2个属性
    'name': '@name',
    'age|20-30': 25,
    'city': '@city',
    'gender': '@boolean'
  }
});

console.log(data);

输出示例:

{
  "object": {
    "name": "John Smith",
    "age": 29
  }
}

5 数组生成

mock.js 提供了生成随机数组的功能:

const data = Mock.mock({
  'list|1-5': [{        // 生成1到5个元素的数组
    'id|+1': 1,         // id 从 1 开始递增
    'name': '@name'
  }]
});

console.log(data);

输出示例:

{
  "list": [
    { "id": 1, "name": "John" },
    { "id": 2, "name": "Alice" }
  ]
}

6 时间生成

mock.js 也支持生成随机日期和时间:

const data = Mock.mock({
  'date': '@date',         // 生成随机日期
  'time': '@time',         // 生成随机时间
  'datetime': '@datetime', // 生成随机日期时间
  'now': '@now'            // 生成当前时间
});

console.log(data);

输出示例:

{
  "date": "2024-08-20",
  "time": "14:22:16",
  "datetime": "2024-08-20 14:22:16",
  "now": "2024-08-20 14:22:16"
}

五. 拦截 AJAX 请求

1 模拟 GET 请求

你可以使用 Mock.mock() 拦截 GET 请求并返回模拟数据:

Mock.mock('/api/user', 'get', {
  'id': 1,
  'name': '@name',
  'age|20-30': 25
});

fetch('/api/user')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  });

输出示例:

{
  "id": 1,
  "name": "John Doe",
  "age": 28
}

2 模拟 POST 请求

你也可以模拟 POST 请求:

Mock.mock('/api/user', 'post', (options) => {
  const body = JSON.parse(options.body);
  return {
    id: body.id,
    name: '@name',
    age: '@integer(20,30)'
  };
});

fetch('/api/user', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ id: 1 })
})
  .then(response => response.json())
  .then(data => {
    console.log(data);
  });

输出示例:

{
  "id": 1,
  "name": "Jane Doe",
  "age": 23
}

3 使用正则表达式匹配路由

你可以使用正则表达式来匹配路由,模拟 RESTful 风格的接口:

Mock.mock(/\/api\/user\/\d+/, 'get', {
  'id': '@id',
  'name': '@name',
  'age|20-30': 25
});

fetch('/api/user/123')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  });

输出示例:

{
  "id": 123,
  "name": "John Smith",
  "age": 25
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

统一认证及单点登录(SSO)技术探讨

在当今复杂的企业环境中&#xff0c;用户身份管理和访问控制变得越来越重要。随着企业应用系统的增多&#xff0c;如何高效地管理用户身份和简化用户登录流程成为了一个亟待解决的问题。统一认证和单点登录&#xff08;SSO&#xff09;技术应运而生&#xff0c;为企业提供了一种…

泊松自助法(Poisson Bootstrap Sampling):大型数据集上的自助抽样

自助抽样可以根据收集的样本推断总体的统计特征(如均值、十分位数、置信区间)。泊松自助抽样&#xff08;Poisson Bootstrap Sampling&#xff09;是一种用于统计分析中的重采样技术&#xff0c;特别是在机器学习和数据科学中用于模型评估和误差估计。这种方法的一个特点是保留…

【深度学习】使用VScode远程服务器GPU进行训练

使用VScode远程服务器GPU进行训练 参考文献1、使用vscode远程服务器2、使用mobaxterm传输文件 参考文献 参考b站视频远程连接服务器用GPU跑深度学习项目&#xff0c;小白教学。 1、使用vscode远程服务器 打开vscode&#xff0c;在插件管理处安装插件Remote Development&#…

ASM实例的SPILE 存储在ASM的磁盘组上时,集群要如何去获取SPFILE并启动ASM实例?(1)

从11g R2 开始&#xff0c;ASM spfile 会自动存储在安装集群软件时创建的第一个磁盘组中&#xff0c;一般为OCR磁盘组。由于投票盘/OCR 存储在 ASM 上&#xff0c;因此需要在节点上启动 ASM。要启动 ASM&#xff0c;需要其 SPFILE 。但 SPFILE 仅位于 ASM 磁盘组上。集群是如何…

融合创新趋势:Web3时代的跨界融合

随着互联网技术的飞速发展&#xff0c;Web3时代的到来正引领着一场深刻的技术与社会变革。Web3&#xff0c;作为下一代互联网技术的代表&#xff0c;不仅仅是一种技术创新&#xff0c;更是一种跨界融合的趋势。通过去中心化、智能合约和区块链技术的应用&#xff0c;Web3正在重…

大模型心高气傲,没有AI Agents生死难料

前言 AI Agent&#xff0c;正在接棒大语言模型LLM&#xff0c;成为AI圈最火的话题。 目前&#xff0c;AI创投圈的众生相&#xff0c;大概是这样的&#xff1a; 大厂俱乐部&#xff1a;OpenAI内部员工声称&#xff0c;AI Agent是OpenAI的新方向&#xff1b;微软尝试推动copil…

解锁高效办公新姿势:SSO单点登录+企业网盘完美搭配

在现代互联网环境中&#xff0c;随着企业业务的不断扩展&#xff0c;多系统、多应用的集成成为常态。为了提升用户体验&#xff0c;减少用户在不同系统间切换的繁琐&#xff0c;单点登录&#xff08;SSO, Single Sign-On&#xff09;技术应运而生。 本文将详细介绍SSO单点登录的…

NRK3301语音识别芯片在头戴式照明灯上的应用的方案

在现代社会&#xff0c;头戴式照明灯在各个领域发挥着重要作用&#xff0c;如户外探险、工业作业、夜间骑行等。为了提高这类产品的便捷性和安全性&#xff0c;我们采用了NRK3301语音识别芯片&#xff0c;并将其应用于头戴式照明灯中。这一创新应用使用户能够通过语音指令控制灯…

Browserless 网页抓取:在 Selenium 中使用 NodeJs

Selenium 是否有效&#xff1f; Selenium 是一个流行的开源网页自动化框架&#xff0c;主要用于浏览器测试自动化。此外&#xff0c;它也可以用来解决动态网页抓取问题。 Selenium 有三个主要组件&#xff1a; Selenium IDE&#xff1a;一个浏览器插件&#xff0c;提供了一种…

「JVS更新日志」逻辑引擎、智能BI、规则引擎8.20功能更新说明

项目介绍 JVS是企业级数字化服务构建的基础脚手架&#xff0c;主要解决企业信息化项目交付难、实施效率低、开发成本高的问题&#xff0c;采用微服务配置化的方式&#xff0c;提供了 低代码数据分析物联网的核心能力产品&#xff0c;并构建了协同办公、企业常用的管理工具等&am…

单域名SSL证书申请三步法

申请单域名SSL证书&#xff0c;确保您的网站安全可信&#xff0c;只需简单三步&#xff1a; 选择证书类型与提供商&#xff1a;首先&#xff0c;确定您需要的单域名SSL证书类型&#xff0c;如DV&#xff08;域名验证&#xff09;证书。接着&#xff0c;选择一个信誉良好的证书提…

笔记-系统规划与管理师-案例题-2022年-服务规划设计

【说明】 某跨国公司新聘小唐为系统规划管理师来帮助提升中国区总部的IT服务水平&#xff0c;中国区的IT系统尚在设计阶段&#xff0c;小唐需根据已经识别的服务需求及设定的服务级别&#xff0c;进行资源配置&#xff0c;以确保服务团队满足与业务团队约定的当前及未来的IT服务…

Grafana指标汉化攻略:轻松实现中文可视化

1、Grafana解压 目录&#xff08;grafana-v11.1.3&#xff09; 进入到\conf 2、找到&#xff1a;defaults.ini 3、打开defaults.ini &#xff0c;搜索&#xff1a;en-US 4、注释掉default_language en-US # Default UI language (supported IETF language tag, such as en…

吐血整理,最全论文指令手册,还有 ChatGPT 3.5/4.0 新手使用手册~ 【亲测好用】

今天给大家分享下论文润色、降重、写作的GPT指令提示词&#xff0c;按论文步骤整理 让你的文章更加有逻辑且通顺&#xff0c;助力快速完成论文&#xff0c;相信对你有帮助~ 一、论文写作润色指令 1、写作选题指令 ① 确定研究对象 我是一名【XXXXX】&#xff0c;请从以下素…

新书上架 | 《智能计算系统:从深度学习到大模型(第2版)》重磅上市!

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

多元统计分析——基于R的笔记本电脑价格与参数可视化

注&#xff1a;能力有限&#xff0c;存在不足之处。 现如今&#xff0c;笔记本电脑现在已经成为了我们日常生活中所必备的一种工具&#xff0c;使用笔记本既可以为我们在学习上带来便利也可以在为我们在工作上带来便利&#xff0c;但是笔记本的价格与许多参数有关&#xff0c;因…

构建个人编程学习的知识宝库:高效笔记记录与整理策略

文章目录 每日一句正能量前言笔记工具选择笔记结构设计实践与复习策略后记 每日一句正能量 人生之美&#xff0c;不在争求&#xff0c;而在静守。只愿此心&#xff1a;一世清宁&#xff0c;安然盛开&#xff01; 前言 在编程的广阔天地中&#xff0c;我们如同探险者&#xff0…

Stable Diffusion最强插件ControlNet简介

前言 随着人工智能技术的飞速发展&#xff0c;图像生成已经成为了一个热门领域。在这其中&#xff0c;Stable Diffusion插件ControlNet凭借其创新的技术和强大的功能&#xff0c;获得了一致好评。 所有的AI设计工具&#xff0c;模型和插件&#xff0c;都已经整理好了&#xff…

SpringBoot笔记01

第1章 Spring Boot概要 1.1 SpringBoot介绍 随着动态语言的流行&#xff08;Ruby、Scala、Node.js&#xff09;, Java的开发显得格外的笨重&#xff1b;繁多的配置、低下的开 发效率、复杂的部署流程以及第三方技术整合难度大。 在上述环境下&#xff0c;Spring Boot由此诞生…

《Techporters架构搭建》-Day06 Springboot国际化

Springboot国际化 什么是国际化&#xff1f;为什么使用国际化&#xff1f;国际化细分国际化相关知识Locale对象MessageSource接口LocaleResolver接口国际化文件 国际化一般实现国际化改进版框架中国际化 源码地址&#xff1a;请看day06 什么是国际化&#xff1f; 国际化&#…