前端开发中的模拟后端与MVVM架构实践[特殊字符][特殊字符][特殊字符]

平时,后端可能不能及时给接口给前端进行数据调用和读取。这时候,前端想到进行模拟后端接口。本文将介绍如何通过vite-plugin-mock插件模拟后端接口,并探讨MVVM架构在前端开发中的应用。此外,我们还将讨论Vue2与Vue3的区别,以及如何处理动态路由和登录鉴权等常见问题。

一、模拟后端接口

通过模拟接口,前端开发者可以在不依赖后端的情况下进行开发和调试。

1. 使用 vite-plugin-mock 插件

vite-plugin-mock 是一个用于Vite项目的插件,可以帮助我们快速创建模拟接口。以下是使用步骤:

  1. 安装插件

    npm i vite-plugin-mock -D
    
  2. vite.config.js 中配置

    import { defineConfig } from 'vite';
    import vue from '@vitejs/plugin-vue';
    import { viteMockServe } from 'vite-plugin-mock';export default defineConfig({plugins: [vue(),viteMockServe({mockPath: 'mock', // 指定mock文件存放的目录localEnabled: true, // 开发环境启用mock}),],
    });
    
  3. 创建模拟接口
    在项目根目录下创建 mock 文件夹,并在其中创建 user.js 文件:

    export default [{url: '/api/login',method: 'post',response: () => {return {code: 200,message: 'success',data: {token: 'mock-token',},};},},
    ];
    

通过以上步骤,我们可以在开发环境中使用 /api/login 接口进行登录模拟。
在这里插入图片描述

二、MVVM架构

MVVM(Model-View-ViewModel)是一种前端架构模式,它将应用程序分为三个部分:Model、View 和 ViewModel。

1. MVVM 的核心概念

  • Model:数据模型,负责处理数据逻辑,通常包括从后端获取数据的部分(如Axios请求)。
  • View:视图层,负责展示数据和用户界面。
  • ViewModel:连接View和Model的桥梁,负责生成和维护视图与数据层的关系。它将视图的状态和行为封装在其中,使得View和Model之间的耦合度降低。

2. MVVM 的优势

  • 低耦合:MVVM架构使得View、Model和ViewModel之间的关联性减弱,各自独立,互不影响。
  • 分层开发:通过分层开发,开发者可以更好地组织代码,提高代码的可维护性和可扩展性。
    在这里插入图片描述

三、Vue2 与 Vue3 的区别

Vue3 是 Vue2 的升级版本,带来了许多新特性和改进。以下是两者之间的主要区别:

1. 双向绑定原理

  • Vue2:使用 Object.defineProperty() 实现双向绑定。这种方式在后续更新属性时无法劫持,导致数据更新时视图不更新。
  • Vue3:使用 Proxy 实现双向绑定。Proxy 可以劫持后续更新的数据,确保数据更新时视图同步更新。

2. $set 方法

  • Vue2:使用 this.$set 来动态添加响应式属性。
  • Vue3:不再需要 $set 方法,直接使用 refreactive 即可。

3. 生命周期

  • Vue2beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, beforeDestroy, destroyed, activated, deactivated
  • Vue3setup, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted

4. 父子组件通信

  • Vue2
    • 父传子:通过 props
    • 子传父:通过 this.$emit("事件", 参数)
  • Vue3
    • 父传子:通过 props
    • 子传父:通过 defineEmits(['事件名称'])

5. API 风格

  • Vue2:选项式API,将不同的属性(如 data, methods)分开定义。
  • Vue3:组合式API,允许将相关逻辑组织在一起,提高代码的可读性和可维护性。

6. 多根节点支持

  • Vue2:只支持单根节点。
  • Vue3:支持多根节点。

7. 数据定义

  • Vue2:在 data() 中定义数据。
  • Vue3:使用 refreactive 定义数据。

四、动态路由与登录鉴权

在后台管理系统中,动态路由和登录鉴权是常见的需求。以下是处理这些问题的常见方法:

1. 动态路由

动态路由可以根据用户的权限动态加载路由。常见的实现方式是通过 addRoute 方法动态添加路由。

  • 问题:刷新页面后,动态路由会丢失。
  • 解决方案:将路由信息存储在 localStoragesessionStorage 中,页面刷新时重新加载路由。

2. 登录鉴权

登录鉴权是确保用户访问权限的重要环节。常见的实现方式包括:

  • Token 验证:用户登录后,后端返回一个Token,前端将其存储在 localStoragecookie 中,每次请求时携带该Token进行验证。
  • 路由守卫:在路由跳转前,通过路由守卫检查用户是否已登录,未登录则跳转到登录页面。

五、项目实践

在一个使用 Vue3 + Vite + Element Plus + Pinia + Apifox 的后台管理项目中,可能会遇到以下问题:

1. 首页加载慢

  • 解决方案:使用虚拟长列表和分段加载技术,减少一次性加载的数据量,提高页面加载效率。

2. 安全性

  • 解决方案:确保Token的安全性,避免XSS攻击,使用HTTPS加密传输数据。

六、总结

通过 vite-plugin-mock 插件,我们可以轻松模拟后端接口,加快前端开发进度。MVVM架构帮助我们更好地组织代码,降低耦合度,提高代码的可维护性。Vue3 带来了许多新特性,如 Proxy 双向绑定、组合式API等,使得开发更加高效。动态路由和登录鉴权是后台管理系统中常见的需求,合理处理这些问题可以提升用户体验和系统安全性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA毕业设计210—基于Java+Springboot+vue3的中国历史文化街区管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3的中国历史文化街区管理系统(源代码数据库)210 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、工作人员、管理员三种角色 1、用户…

docker的前世今生

docker来自哪里? 从我们运维部署的历史来看,宿主机从最初的物理机到虚拟机,再到docker,一步步演进到现在。技术演进其实是为了解决当前技术的痛点,那我们来看看有哪些痛点以及如何克服痛点的。 物理机 一般来说&…

电脑办公技巧之如何在 Word 文档中添加文字或图片水印

Microsoft Word是全球最广泛使用的文字处理软件之一,它为用户提供了丰富的编辑功能来美化和保护文档。其中,“水印”是一种特别有用的功能,它可以用于标识文档状态(如“草稿”或“机密”)、公司标志或是版权信息等。本…

【机器学习案列】探索各因素对睡眠时间影响的回归分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

2024年度总结

迟来的2024年度总结,本文主要包括创作经历的回顾、个人成长与突破、以及职业与生活的平衡。 文章目录 1、 创作经历回顾2、 成长回顾3、 职业与生活的平衡4、 展望未来 1、 创作经历回顾 从高中开始就喜欢给别人解答疑问,大学学习模电、数电时&#xff…

vim在命令模式下的查找功能

/ab 从上往下 n 下一个 N 上一个 示例: 在命令模式下直接点击键盘上的/就可以进行查找,比如我要查找a,输入a后再回车,就可以检索出文件中所有和a有关的内容。 ?ab 从下往上 N 下一个 n 上一个 示例:和上图相同…

机器学习-使用梯度下降最小化均方误差

前面有一篇文章《机器学习-常用的三种梯度下降法》,这篇文章中对于均方误差的求偏导是错误的,为了澄清这个问题,我再写一篇文章来纠正一下,避免误导大家。 一、批量梯度下降法 我们用 批量梯度下降法 来求解一个简单的 线性回归…

基于quartz,刷新定时器的cron表达式

文章目录 前言基于quartz,刷新定时器的cron表达式1. 先看一下测试效果2. 实现代码 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&…

LabVIEW智能胎压监测

汽车行车安全是社会关注焦点,轮胎压力异常易引发交通事故,开发胎压监测系统可保障行车安全、降低事故发生率。 系统组成与特点 (一)硬件组成 BMP - 280 气体压力传感器:高精度、稳定性好、能耗低,适合车载…

C语言教程——文件处理(1)

目录 前言 二、什么是文件 2.1文件的概念 2.2程序文件 2.3数据文件 2.4文件名 2.5二进制文件和文本文件 三、文件操作 3.1文件指针 3.2文件的打开与关闭 四、文件的顺序读写 4.1fgetc 4.2fputc 4.3fputs 4.4fgets 总结 前言 我们知道电脑上有许许多多的文件&a…

【橘子ES】Kibana的分析能力Analytics简易分析

一、kibana是啥,能干嘛 我们经常会用es来实现一些关于检索,关于分析的业务。但是es本身并没有UI,我们只能通过调用api来完成一些能力。而kibana就是他的一个外置UI,你完全可以这么理解。 当我们进入kibana的主页的时候你可以看到这样的布局。…

c#的tabControl控件实现自定义标签颜色

最近项目需要自定义tabControl控件颜色,而默认这个控件是不支持自定义标签颜色的,于是想办法实现了这个功能,效果如下图所示: 直接上代码: using System; using System.Collections.Generic; using System.ComponentM…

从零到一:Spring Boot 与 RocketMQ 的完美集成指南

1.Rocket的概念与原理 RocketMQ 是一款由阿里巴巴开源的分布式消息中间件,最初用于支持阿里巴巴的海量业务。它基于发布-订阅模型,具备高吞吐、低延迟、高可用和强一致性的特点,适用于消息队列、大规模数据流处理等场景。以下是对 RocketMQ …

Odoo免费开源ERP最佳业务实践:生产管理

文 / 开源智造(OSCG) Odoo亚太金牌服务 概述 Odoo是全球排名第一的免费开源ERP系统,以其强大的功能和模块化设计著称,适用于各种规模及类型的企业。Odoo集成了生产、采购、销售、库存、财务、人力资源、市场营销、电子商务等多个…

1.CSS的三大特性

css有三个非常重要的三个特性&#xff1a;层叠性、继承性、优先级 1.1 层叠性 想通选择器给设置想听的样式&#xff0c;此时一个样式就会覆盖&#xff08;层叠&#xff09;另一个冲突的样式。层叠性主要是解决样式冲突的问题。 <!DOCTYPE html> <html lang"en&…

【2024年华为OD机试】(A卷,200分)- 优雅子数组 (JavaScriptJava PythonC/C++)

一、问题描述 题目描述 如果一个数组中出现次数最多的元素出现大于等于 k 次&#xff0c;被称为 k-优雅数组&#xff0c;k 也可以被称为优雅阈值。 例如&#xff1a; 数组 [1, 2, 3, 1, 2, 3, 1] 是一个 3-优雅数组&#xff0c;因为元素 1 出现次数大于等于 3 次。数组 [1,…

电子应用设计方案102:智能家庭AI鱼缸系统设计

智能家庭 AI 鱼缸系统设计 一、引言 智能家庭 AI 鱼缸系统旨在为鱼类提供一个健康、舒适的生活环境&#xff0c;同时为用户提供便捷的管理和观赏体验。 二、系统概述 1. 系统目标 - 自动维持水质稳定&#xff0c;包括水温、酸碱度、硬度和溶氧量等关键指标。 - 智能投食&…

智能化加速标准和协议的更新并推动验证IP(VIP)在芯片设计中的更广泛应用

作者&#xff1a;Karthik Gopal, SmartDV Technologies亚洲区总经理 智权半导体科技&#xff08;厦门&#xff09;有限公司总经理 随着AI技术向边缘和端侧设备广泛渗透&#xff0c;芯片设计师不仅需要考虑在其设计中引入加速器&#xff0c;也在考虑采用速度更快和带宽更高的总…

Vue3.5 企业级管理系统实战(三):页面布局及样式处理 (Scss UnoCSS )

本章主要是关于整体页面布局及样式处理&#xff0c;在进行这一章代码前&#xff0c;先将前两章中的示例代码部分删除&#xff08;如Home.vue、About.vue、counter.ts、App.vue中引用等&#xff09; 1 整体页面布局 页面整体布局构成了产品的框架基础&#xff0c;通常涵盖主导…

Linux 消息队列的使用方法

文章目录 1.概念2. 创建消息队列3. 发送消息4. 接收消息5. 消息结构体6. 消息队列控制&#xff08;删除、获取队列状态&#xff09;消息队列是否存在7. 使用场景8. 注意事项使用例子判断消息队列是否存在的代码获取队列空间大小 1.概念 消息队列是一种进程间通信 (IPC) 机制&a…