Mock快速入门使用及组件构造首页

news2024/12/27 13:37:53

一.什么是Mock.js

Mock.js(也称为 Mockjs 或 Mock.js)是一个用于前端开发的模拟数据生成和接口模拟工具。它的主要作用是帮助前端开发人员在开发过程中模拟后端 API 的响应数据,以便进行测试和开发,而无需实际后端服务器支持。

  1. 模拟数据生成: Mock.js 允许开发人员定义各种数据类型和结构的模拟数据,包括数字、字符串、对象、数组等。这些模拟数据可以用于填充页面、测试页面渲染和功能,以及模拟用户交互。

  2. 接口模拟: Mock.js 可以用来模拟后端 API 的响应。开发人员可以定义虚拟的接口路径和参数,并为这些接口定义返回的模拟数据。这样,前端开发人员可以独立进行开发,而不需要等待后端接口的实际实现。

  3. 随机数据生成: Mock.js 具备生成随机数据的能力,这对于测试不同数据情况下的页面行为非常有用。例如,你可以生成不同用户的随机用户名、随机地址等。

  4. 拦截请求: Mock.js 可以拦截前端发出的请求,并根据定义的规则返回模拟数据。这使得前端开发人员可以模拟各种后端情况,包括成功响应、错误响应、超时等。

  5. 易于使用: Mock.js 的语法简单且易于学习,它可以轻松集成到前端项目中。通常,Mock.js 会作为一个库或依赖项被引入项目中。

  6. 与前端框架兼容: Mock.js 可以与各种前端框架(如Vue.js、React、Angular等)一起使用,因为它与前端的业务逻辑解耦,不依赖于特定的框架。

  7. 可配置性: Mock.js 提供了丰富的配置选项,允许你定义各种规则和条件,以便更精细地控制模拟数据的生成和接口的模拟。

小结:Mock.js 是前端开发中一个非常有用的工具,它可以帮助开发人员在开发过程中更轻松地处理数据模拟和接口模拟,提高开发效率并降低与后端开发的协作成本

注意:Mock.js 主要用于开发和测试阶段,在实际生产环境中通常不会使用它来提供真实的数据服务 

1.配置开发环境

1.1安装Mock.js

npm i mockjs -D

1.2 配置引入mockjs

为了只在开发环境使用mock,而打包到生产环境时自动不使用mock,我们可以在config目录中的dev.env.jsprod.env.js做一个配置,去启动mock开发环境,关闭生产环境

(1)dev.env.js

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
	MOCK: 'true'
})

(2)prod.env.js 

module.exports = {
  NODE_ENV: '"production"',
	MOCK: 'false'
}

在主程序文件配置开发环境

//开发环境下才会引入mockjs
process.env.MOCK && require('@/mock')

2. mockjs使用

(1)为每个*.vue定义单独的xxx-mock.js文件,并在其中添加自定义的json数据,还可以通过mockjs的模块生成随机数据信息,动态测试ajax请求效果,在我们发送请求时,可以随机生成JSON数据进行返回

创建src/mock/json目录,定义登录测试数据文件login-mock.js:

//定义静态json数据
/* const loginInfo={
	success:false,
	msg:'账号或者密码错误'
} */

//通过mockjs生成随机json数据
const loginInfo={
	'success|1':true,
	'msg|3-10':'msg'
}

export default loginInfo;

(2)mock拦截ajax请求

在src/mock目录下创建index.js,定义拦截路由配置:

import Mock from 'mockjs' 		  //引入mockjs,npm已安装
import action from '@/api/action' //引入封装的请求地址

//全局设置:设置所有ajax请求的超时时间,模拟网络传输耗时
Mock.setup({
	// timeout: 400    //延时400s请求到数据
	timeout: 200 - 400 //延时200-400s请求到数据
})

//引入登录的测试数据,并添加到mockjs
import loginInfo from '@/mock/json/login-mock.js'

//数据请求地址
let url = action.getFullPath('SYSTEM_USER_DOLOGIN');

//使用mockjs模拟发送请求
// Mock.mock(url,'post',loginInfo);
Mock.mock(url,/post|get/i,loginInfo);
/* Mock.mock(url, /post|get/i, (options) => {
	// 最佳实践,
	console.debug(url, options);
	return Mock.mock(loginInfo);
}); */

测试演示

以登录为例,当我们在向后端发送请求的时候模拟数据生成响应不同的结果,不同的参数返回的结果也不同,实现了模拟数据去测试功能

二.组件构造首页导航栏和左侧菜单栏

1.将所有组件导入src/components中

资料放在顶部资源中哦

2.配置路由关系

在src/router/index.js中配置

import AppMain from '@/components/AppMain'
import LeftNav from '@/components/LeftNav'
import TopNav from '@/components/TopNav'
{
      path: '/AppMain',
      name: 'AppMain',
      component: AppMain
    },
    {
      path: '/LeftNav',
      name: 'LeftNav',
      component: LeftNav
    },
    {
      path: '/TopNav',
      name: 'TopNav',
      component: TopNav
    },

3.修改样式问题

在下面所有的导入组件,并将LeftNav和TopNav注册到Appmain中

(1)Appmain

export default {
components:{
      TopNav,LeftNav
    },
    data(){
      return{
        asideClass:'main-aside'
      }
    }
	};

(2)LeftNav

export default {
		data(){
		  return{
		    collapsed:false
		  }
		}
	}

(3)TopNav

export default {
		data(){
		  return{
		    collapsed:false,
        imgshow:require('@/assets/img/show.png'),
        imgshow:require('@/assets/img/sq.png')
		  }
		}
	}

4.补充动态演示效果

由上面的可以看出,虽然左侧菜单栏由动态演示,但是顶部的收起菜单栏没有,所以需要补充JS代码进行动态演示的效果

(1)Appmain

export default {
    components:{
      TopNav,LeftNav
    },
    data(){
      return{
        asideClass:'main-aside'
      }

    },
    created(){
      this.$root.Bus.$on('bbb',v=>{
      this.asideClass = v? 'main-aside-collapsed' : 'main-aside';
    });
    }

	};

 (2)LeftNav

export default {
		data(){
		  return{
		    collapsed:false
		  }
		},
    created(){
      this.$root.Bus.$on('bbb',v=>{
      this.collapsed = v ;
    });
    }
	}

(3)TopNav 

export default {
		data(){
		  return{
		    collapsed:false,
        imgshow:require('@/assets/img/show.png'),
        imgsq:require('@/assets/img/sq.png'),
		  }
		},
    methods:{
      doToggle(){
        this.collapsed =!this.collapsed;
        //将是否折叠放入总线
        this.$root.Bus.$emit('bbb',this.collapsed);
      }
    }
	}

通过在TopNav的按钮方法中注册一个组件通信控制左侧菜单栏,由于左侧菜单栏由LeftNav和Appmain共同组成,所以需要同时控制属性collapsed和asideClass的值进行展开和缩放

演示效果:

5.退出登录

编写退出的方法

exit(){
        this.$router.push("/Login");
      }

效果演示 

 

今天的分享到这里就结束了,感谢各位大大的观看,各位大大的三连是博主更新的动力,感谢谢谢谢谢谢谢谢谢各位的支持!!!!! 

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

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

相关文章

进灰的iPhone是印度组装?且慢嘲讽,这是中国制造!

苹果的iPhone15Pro max被拆机发现镜头出现灰尘,一些人士第一时间就说是印度制造,然而这些拆机博主晒出的图片显示却是中国制造,显然这与一些人士的预期有所不同,导致如此结果可能与iPhone的组装工期太紧张有关。 苹果的iPhone15生…

力扣刷题-链表-删除链表的倒数第N个节点

19.删除链表的倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2:输入:head [1], n 1 输出&…

网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业

很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。 算上从学校开始学习,已经在网安这条路上走…

软件设计模式系列之十五——职责链模式

1 模式的定义 职责链模式(Chain of Responsibility Pattern)也称为责任链模式,是一种结构型设计模式,用于构建一条对象处理请求的责任链。在这个模式中,多个对象依次处理请求,直到其中一个对象能够处理该请…

Linux系统编程(五):信号

参考引用 UNIX 环境高级编程 (第3版)黑马程序员-Linux 系统编程 1. 信号基础理论 1.1 概念和机制 概念 信号在生活中随处可见,如:古代战争中摔杯为号、现代战争中的信号弹、体育比赛中使用的信号枪他们都有共性:简单、不能携带大量信息、满足…

你是怎么理解自动化测试的?理解自动化测试的目的和本质

其实自动化测试很好理解,由两部分组成,“自动化”和“测试”,所以我们要理解自动化测试,就必须理解“自动化”和“测试”,只有理解了这些概念,才能更轻松的做好的自动化测试。其中“自动化”可以想象成通过…

【Solidity】Solidity Keccak256 与 SHA3-256

Solidity Keccak256 与 SHA3-256 文章目录 前言什么是 SHA3Keccak256 和 SHA3-256 有什么区别?为何推出sha3参考区块链的造富神话大家一定都有所耳闻,今天我们讨论以太坊中一项基础技术,主打一个一学就会。 前言 看过以太坊源码或者对区块链有了解的的同学,一定都见过一个…

springboot集成quartz并实现定时任务管理

依赖&#xff1a; <quartz.version>2.3.0</quartz.version><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>${quartz.version}</version><exclusions><exclus…

内存管理和模板

目录 定位new表达式 定位new使用的池化技术&#xff1a; ​编辑 malloc和free与new和delete的区别&#xff1a; 内存泄漏&#xff1a; 模板 显示实例化 两个不同参数的模板 模板函数与函数&#xff1a; 类模板 []重载&#xff1a; 定位new表达式 class A { public:A(int …

基于yum制作kylin系统docker镜像

[rootlocalhost yeqiang]# yum install --installroot/home/yeqiang/kylin-docker/ yum 无法找到发布版本&#xff08;可用 --releasever 指定版本&#xff09; 警告&#xff1a;加载 /etc/yum.repos.d/ceph.repo 失败&#xff0c;跳过。 上次元数据过期检查&#xff1a;0:00:…

核货宝:服装店收银系统一般有哪些功能

服装店收银系统是店铺用于管理和处理销售交易的软件系统。它提供了一系列功能和工具&#xff0c;使服装店能高效地进行销售和收款操作。以下是服装店收银系统一般具备的功能&#xff1a; 1. 商品管理&#xff1a;包括商品的基本信息&#xff08;名称、价格、库存等&#xff09;…

睿趣科技:抖音开通蓝V怎么操作的

在抖音这个充满创意和活力的社交媒体平台上&#xff0c;蓝V认证成为了许多用户的梦想之一。蓝V认证不仅是身份的象征&#xff0c;还可以增加用户的影响力和可信度。但是&#xff0c;要在抖音上获得蓝V认证并不是一件容易的事情。下面&#xff0c;我们将介绍一些操作步骤&#x…

word怎么删除空白页?图文详解来了(3种方法)

word是最常用的文档编辑工具之一&#xff0c;但有时在编辑文档时&#xff0c;我们会遇到一个常见问题&#xff0c;那就是不小心插入了空白页。这些空白页可能会破坏文档的布局&#xff0c;使其看起来不专业。那word怎么删除空白页呢&#xff1f;幸运的是&#xff0c;word提供了…

【AD】【pcb】【布线经验】打孔的目的

打孔的目的 就像老师说的&#xff0c;把GND层比作是大海&#xff0c;当拉线引流的时候&#xff0c;需要流动一定的路径。如果直接打孔&#xff0c;可以省略掉这部分路径。 现在知道了为什么&#xff0c;看别人布的板子 铺铜的时候&#xff0c;是一大片 一大片的在布的 然而也…

阿里云通义千问14B模型开源!性能超越Llama2等同等尺寸模型

9月25日&#xff0c;阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。Qwen-14B在多个权威评测中超越同等规模模型&#xff0c;部分指标甚至接近Llama2-70B。阿里云此前开源了70亿参数模型Qwen-7B等&#xff0c;一个多月下载量破100万&#xff0…

LeetCode 1173.即时食物配送

数据准备 drop table Delivery;Create table If Not Exists Delivery (delivery_id int, customer_id int, order_date date, customer_pref_delivery_date date); Truncate table Delivery; insert into Delivery (delivery_id, customer_id, order_date, customer_pref_deli…

设备自动化系统EAP在晶圆厂的关键作用

在现代晶圆厂中&#xff0c;设备自动化系统&#xff08;Equipment Automation Programming&#xff0c;EAP&#xff09;已经成为了不可或缺的关键要素。EAP系统不仅是生产自动化的重要组成部分&#xff0c;更是连接制造执行系统&#xff08;MES&#xff09;与设备之间的桥梁&am…

mysql-4:SQL的解析顺序

SQL语句的解析顺序 文章目录 SQL语句的解析顺序编写顺序与解析顺序解析顺序关键字FROMONOUTER JOINWHEREGROUP BYHAVINGSELECTDISTINCTORDER BYLIMIT 解析流程流程分析流程说明WHERE条件解析顺序 编写顺序与解析顺序 编写顺序 SELECT DISTINCT < select_list > FROM &l…

使用ALU,RAM,寄存器打造一个CPU

CPU简介 计算机的心脏是中央处理单元&#xff0c;简称“CPU” 。这篇文章就利用前几篇文章中提到过的ALU,RAM,寄存器组件做一个CPU。 CPU负责运行程序&#xff0c;程序是由一个个操作组成的&#xff0c;这些操作叫做指令&#xff0c;因为他们“指示”计算机要做什么. CPU能做什…

登录业务实现 - token登录鉴权

登录业务实现&#xff1a; 登录成功/失败实现 -> pinia管理用户数据及数据持久化 -> 不同登录状态的模板适配 -> 请求拦截器携带token&#xff08;登录鉴权&#xff09; -> 退出登录实现 -> token失效&#xff08;401响应拦截&#xff09; 1. 登录成…