day44((VueJS)路由的懒加载使用 路由的元信息(meta) 路由守卫函数 vant组件库的应用)
一.路由懒加载的使用
使用原因
1.使用原因1) 使用一般写法(即直接填写组件的缺点)当使用这种写法,页面在初次加载会将所有路由配置表的添加的组件一次性全部加载,如果项目中组件代码量庞大,就需要很长时间德甲在,如果没有加载完,页面就会一直显示空白,而这种情况带来的用户体验很差,所以需要进行优化。2) 懒加载写法的好处使用这种写法,所有的组件只会在路由地址被访问时才临时加载,当我们初次加载页面也只会加载与首页相关的几个文档和组件,加载文档体积小,页面显示的速度会更快,这样就提升了用户体验。3) 项目代码的打包与文件的重新构建(补充点)1> 指令:npm run build2> 目的:为了将开发环境和生产环境分离,以及优化应用程序的性能和加载速度3> 作用:1>> 在开发阶段,我们通常会使用许多工具和库来辅助开发,例如 Webpack、Babel、ESLint 等。这些工具和库可以帮助我们编写高质量的代码、提高开发效率、优化应用程序的性能等。但是,这些工具和库通常会增加代码的体积和复杂度,因此在生产环境中不需要使用它们。2>> 此外,开发环境和生产环境的配置也有所不同,例如调试信息、代码压缩、错误处理等,需要进行不同的设置。因此,我们需要将开发环境和生产环境分离,将开发环境中的工具和库从最终的产品代码中剔除,以提高代码的性能和加载速度。这就是打包构建的作用。3>> npm run build 命令会执行项目中的构建脚本,将源代码转换为可部署的产品代码,并将它们打包成一个或多个文件,以便在生产环境中使用。在打包过程中,我们可以进行代码压缩、优化、分割等操作,以进一步提高应用程序的性能和加载速度。2.代码解析语法:()=>import('组件路径'),只有在访问到该路由, 对应的组件才临时加载(下载并运行)使用懒加载写法,就不需要在配置表文档引入组件
二.路由元信息(meta)
meta
1.概念以及要点1) 概念与特点:路由元信息(元,开始,原始)添加在路由规则中的一个属性,使用对象格式储存着特定的信息,任何时候访问当前路由,都会自动携带该路由元信息2) 语法:meta:{key:value,key:value}2.代码演示export default [{ path:'/index',name:'index',component: Index,children:[ {path:'/index/gwc',name:'gwc',meta:{ title:'购物车',requireAuth:true },------------可以用于携带该条路由对应的页面标题,也可以携带该网页是否需要登录或者权限之类的判断属性component: Gwc,},]
$ router和$ route的异同
1.概述总结1) 异同总结1> 异1>> $router (叫做路由管理对象),路由管理对象中储存着的是 API,用来管理路由2>> $route (叫做路由对象),路由对象中储存的都是数据,路由跳转那个地址,路由对象就指向那条路由规则2> 同1>> 这两个对象都可以通过该项目内的任意组件实例获取2>> 写法非常类似2) 用法1> $router1>> this.$router.push('/detail')2>> this.$router.go(-1)3>> this.$router.back()--------返回上一条路由地址,等同于go(-1)4>> this.$router.forward()--------去到下一条路由地址,等同于go(1)2> $route1>> this.$route.meta --------------------获取路由元信息2>> this.$route.path ----------------------路由地址3>> this.$route.name --------------------路由别名4>>this.$route.params ---------------------路由参数2.代码演示export default {mounted(){this.$router 路由管理对象 ( 包含了用于管理路由的所有api )this.$router.push('/detail')this.$router.go(-1); --------------跳路由的方法this.$router.back(); -------------------作用相当于 go(-1),返回上一条路由this.$router.forward(); --------------作用相当于go(1),跳下一跳路由this.$route 路由对象( 包含了和当前路由有关的所有信息, 路由地址, 路由参数, 路由元信息 )this.$route.meta --------------------获取路由元信息this.$route.path ----------------------路由地址this.$route.name --------------------路由别名this.$route.params ---------------------路由参数console.log(this.$router);}}
push和go的区别
1.概述与总结push() 方法和 go() 方法在导航方式、参数传递、生命周期函数等方面有所不同1) push() 方法会向历史记录中添加一个新的条目,并在浏览器地址栏中显示新的 URL。而 go() 方法则是在历史记录中移动,不会添加新的条目,也不会改变浏览器地址栏中的 URL。2) push() 方法可以用来跳转到新的页面,而 go() 方法通常用于在页面中进行前进或后退操作3) push() 方法可以接收一个对象作为参数,用来设置新的路径和查询参数等信息。而 go() 方法只能接收一个整数作为参数,用来指定要前进或后退的步数。正数表示前进,负数表示后退。4) push() 方法会触发路由的生命周期函数,例如 componentDidMount() 和 componentWillUnmount() 等。而 go() 方法不会触发这些生命周期函数。2.代码解析this.$router.push('/detail')this.$router.go(-1); --------------跳路由的方法this.$router.back(); -------------------作用相当于 go(-1),返回上一条路由this.$router.forward(); --------------作用相当于go(1),跳下一跳路由
三.路由守卫函数
前置路由守卫函数
1.要点总结(特点,语法,作用)1) 全局前置路由守卫函数1> 特点:全局前置路由守卫函数在路由管理对象实例化的位置写,全局前置路由守卫函数会在跳任何一个路由之前执行2> 语法:路由管理对象.beforeEach((to,from,next)=>{希望在跳路由之前进行的操作})参数:1>> to:去往哪个路由, 这个参数代表路由对象2>> from:从哪个路由来, 这个参数代表路由对象3>> next:是个函数, 用来控制路由的跳转。如果在 beforeEach 的回调函数中调用这个函数,代表允许跳转,如果没有调用,代表不允许跳转(此时页面表现为空白,跳转不过去,也不会报错)3> 作用:(通常在这个函数里面进行什么操作)1>> 动态修改网页标题2>> 添加进度条动画3>> 进行鉴权(判断用户是否有跳转页面的权限,有部分页面需要登录才可以跳转,在这里可以判断页面是否是需要登录才可以跳转的,以及用户是否已经登陆过(是否有 token))2) 路由独享前置守卫函数1> 特点:只在添加了该函数的对应路由跳转前执行,需要在对应的路由规则里面写,形式与 children 属性类似2> 语法:beforeEnter:(to,from)=>{希望在该路由跳转之前执行的操作}允许路由跳转:在回调函数中条件return true;不允许路由跳转:在回调函数中添加return false;内容相同的前置路由守卫函数可以写全局前置路由守卫函数,内容有差别的需要单独写路由独享2.代码解析全局前置路由守卫函数import nProgress from 'nprogress';----------------导入进度条动画库import "nprogress/nprogress.css";---------------手动导入进度条动画库的样式文件nProgress.configure({ showSpinner: false });----------关闭圆形加载动画const router = createRouter({------------实例化路由管理对象history: createWebHistory(import.meta.env.BASE_URL),-----------设置路由模式: history, hashroutes----------------注册路由配置表})router.beforeEach((to,from,next)=>{-----------全局前置守卫路由document.title = to.meta.title;---------------修改网页标题nProgress.start();----------------------------开启进度条动画var token = localStorage.getItem('token');--鉴权( 有访问当前路由的权限,则可以访问, 否则不能访问 )if( to.meta.requireAuth ){ --------------------需要登录的情况if( token ){-----------------------已登录,有tokennext();-----------------调用next()允许路由跳转}else{next('/login');------------未登录,跳转至登录页面,这里还可以用router.push('/login');}}else{ ---------------------不需要登录的情况next();--------------------可以直接允许路由跳转}})路由独享前置守卫函数{path:'/index/gwc',name:'gwc',meta:{ title:'购物车',requireAuth:true },beforeEnter:(to,from)=>{----------路由独享的守卫函数var token = localStorage.getItem('token');if( to.meta.requireAuth && token ){return true;---------------允许路由跳转}else{return false;-----------------阻止路由跳转}},component: Gwc,},
后置路由守卫函数
1.要点全局后置守卫路由:在跳路由完成后执行,可以在这个函数里面设置进度条动画的结束语法:路由管理对象.afterEach((to,from)=>{希望在跳完路由执行的操作})(由于此处已经执行完路由跳转,所以不需要控制是否允许路由跳转的参数 next)2.代码解析router.afterEach((to,from)=>{nProgress.done();------------------停止进度条动画})
四.vant组件库的应用
1. 安装vant:npm i vant2. 安装插件:npm i unplugin-vue-components -D3. 配置插件:import vue from '@vitejs/plugin-vue';import Components from 'unplugin-vue-components/vite';import {VantResolver} from 'unplugin-vue-components/resolvers';export default {plugins:[vue(),Components({resolvers:[VantResolver()],})],};4. 使用组件:<van-button type='primary'/>(unplugin-vue-components 会解析模板并自动注册对应的组件)
相关文章:
day44((VueJS)路由的懒加载使用 路由的元信息(meta) 路由守卫函数 vant组件库的应用)
一.路由懒加载的使用 使用原因 1.使用原因1) 使用一般写法(即直接填写组件的缺点)当使用这种写法,页面在初次加载会将所有路由配置表的添加的组件一次性全部加载,如果项目中组件代码量庞大,就需要很长时间…...
非线性优化资料整理
做课题看了一些非线性优化的资料,整理一下,以方便查看: 优化的中文博客 数值优化|笔记整理(8)——带约束优化:引入,梯度投影法 (附代码)QP求解器对比对于MPC的QP求解器 数值优化| 二次规划的…...
踩坑wow.js 和animate.css一起使用没有效果
踩坑wow.js 和animate.css一起使用没有效果 问题及解决方法一、电脑系统配置问题二、版本问题 问题及解决方法 一、电脑系统配置问题 在系统属性里面把窗口内的动画和元素勾选 二、版本问题 使用wow加animate4.4.1也就是最新本,打开网页没有任何动画效果 但是把…...
Laravel - API 项目适用的图片验证码
1. 安装 gregwar/captcha 图片验证码接口的流程是: 生成图片验证码 生成随机的 key,将验证码文本存入缓存。 返回随机的 key,以及验证码图片 # 不限于 laravel 普通 php 项目也可以使用额 $ composer require gregwar/captcha2. 开发接口 …...
iMazing3安全吗?好不好用?值不值得下载
一、安全性 iMazing在设计和开发过程中,始终把用户数据的安全性放在首位。它采用了多种先进的安全技术来确保用户数据在传输、备份和存储过程中的安全。 iMazing3Mac-最新绿色安装包下载如下: https://wm.makeding.com/iclk/?zoneid49816 iMazing3Wi…...
韩国突发:将批准比特币ETF
作者:秦晋 韩国两党宣布将批准比特币ETF。比特币也再次成为竞选的宠儿。 4月10日,韩国将迎来每隔4年而进行的一次立法大选。在大选之前,现执政党与反对党都承诺将批准比特币ETF。 我们知道,比特币的主要受众群体以年轻人居多。此前…...
Kubernetes IoTDB系列 | IoTDB数据库同步|IoTDB数据库高可用
目录 一、介绍二、应用场景三、IoTDB 数据库搭建四、修改同步配置文件1、配置接收端的参数2、配置发送端的参数五、启动同步功能发送端六、测试一、介绍 IoTDB 数据库同步是指将一个节点的数据复制到其他节点,以确保数据的冗余和可用性。在分布式环境中,数据同步是保证系统高…...
重拾前端基础知识:CSS
重拾前端基础知识:CSS 前言选择器简单选择器属性选择器组合选择器 插入CSS内嵌样式(Inline Style)内部样式(Internal Style)外部样式(External Style) 层叠颜色背景颜色文本颜色RGB 颜色HEX 颜色…...
综合实战(volume and Compose)
"让我,重获新生~" MySQL 灾难恢复 熟练掌握挂载卷的使用,将Mysql的业务数据存储在 外部。 实战思想: 使用 MySQL 5.7 的镜像创建容器并创建一个普通数据卷 "mysql-data"用来保存容器中产生的数据。我们需要容器连接到Mysql服务&a…...
国际黄金价格要具体市况具体分析
国际黄金价格走势多变,投资者在参与的过程中要注意自己交易策略的灵活度,要做到具体市况具体分析,而且面对不同的市况,要采用不同的挂单方式,这样才能把握住更有利的入场时机。在大家常用的现货黄金交易软件MT4中&…...
【python】0、超详细介绍:json、http
文章目录 一、json二、http2.1 json 读取 request 序列化 三、基本类型3.1 decimal 四、图像4.1 颜色格式转换 一、json import json f open(data.json) # open json file data json.load(f) # 读出 json object for i in data[emp_details]: # 取出一级属性 emp_details, …...
可观测性在威胁检测和取证日志分析中的作用
在网络中,威胁是指可能影响其平稳运行的恶意元素,因此,对于任何希望避免任何财政损失或生产力下降机会的组织来说,威胁检测都是必要的。为了先发制人地抵御来自不同来源的任何此类攻击,需要有效的威胁检测情报。 威胁…...
win32com打开带密码excel
简单来说给excel上加密常见的方法有两种 方法一: 直接修改文件属性 这种方法对应的解法是 excel DispatchEx("Excel.Application") # 启动excel excel.Visible visible # 可视化 excel.DisplayAlerts displayalerts # 是否显示警告 wb excel.Wo…...
IntelliJ IDEA 的常用快捷键
IntelliJ IDEA 的常用快捷键非常多,这些快捷键可以帮助你更高效地编写代码。以下是一些常用的快捷键总结: 基础操作 CtrlN:查找类CtrlShiftN:查找文件CtrlAltL:格式化代码AltInsert:生成代码(…...
C语言统计成绩
目录 描述 输入描述: 输出描述: 问题描述 解决方案 总结 描述 输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。 数据范围:1≤�≤100 1≤n≤100 , …...
LVS做集群四层负载均衡的简单理解
背景:业务中主要是TCP/SSL连接,要做四层负载均衡。 之前做负载均衡,调研了nginx(见之前的nginx实现后端服务负载均衡和nginx负载均衡监测后台服务状态)。 nginx作为一个应用,做四层负载均衡效率低。lvs是li…...
2.1_6 线程的实现方式和多线程模型
文章目录 2.1_6 线程的实现方式和多线程模型(一)线程的实现方式(1)用户级线程(2)内核级线程 (二)多线程模型(1)一对一模型(2)多对一模…...
4.5 MongoDB 文档存储
目录 1. 相关安装 2. Pycharm可视化观察MongoDB 3. python使用 MongoDB 最初流程代码 4. 插入、查询、更新、删除数据 4.1 插入数据 4.2 查询数据 4.3 更新数据 4.3.1 更新一条数据 4.3.2 更新多条数据 4.4 删除数据 5. 计数、排序、偏移 5.1 计数 5.2 排序 5.3 …...
什么是服务级别协议(SLA)?
在数字化时代,企业和服务提供商之间的关系变得越来越复杂,而服务级别协议(SLA)则在这个复杂网络中发挥着至关重要的作用。本文将深入介绍SLA,从它的定义、应用场景到监测方法,全方位解析这一法律桥梁如何确…...
使用Python进行Sentinel-2 图像聚类
聚类或无监督分类是根据统计相似性将图像的像素值分组或聚合到一定数量的自然类(组)的过程。在本教程中,我们将使用rasterio进行sentinel-2图像处理,并使用功能强大的完整scikit-learn python 包在jupyter Notebook中进行聚类。 Scikit-learn是一个用于 Python 编程语言的…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
