Vue笔记(五)路由进阶

导航守卫

vue-router提供导航守卫主要通过跳转或**取消*的方式守卫导航。有很多方式植入路由导航中:全局的、单个路由独享的,或者组件级的。

全局前置守卫:beforeEach。
每个守卫接收两个参数:

  1. to:将要进入的目标
  2. from:当前导航正要离开的路由
const router = createRouter({...})router.beforeEach((to,from)=>{//如果返回false会取消当前导航return true});//跳转到其他路由router.beforeEach((to,from)=>{//可以根据路由的name或path等跳转,需要判断只跳转一次,否则会多次执行if(to.name !== 'about'){return {name:'about'}}//path跳转if(to.fullPath !== '/about'){return '/about'}})

全局解析守卫

可以用router.beforeResolve注册一个全局解析守卫,它在每次导航时都会触发,解析守卫会在导航被确认之前、所有组件内守卫和异步路由组件被解析之后调用。意味着它会在所有都执行完毕就绪后被调用。
router.beforeResolve是获取数据或执行任何其他操作(如果用户无法进入页面时你希望避免执行的操作)的理想位置。

    router.beforeResolve(to=>{//返回false,路由不会跳转,可以做权限校验等return false})

全局后置钩子

全局后置钩子和守卫不同的是,这些钩子不会接受next函数也不会改变导航的本身

    router.afterEach((to,from,failure) => {console.log(to.fullPath)})

路由独享的守卫

可以在路由上直接定义beforeEnter守卫。它只会在进入路由时触发,不会因为改变路径上的变量而触发。可以传入函数数组。

    const routes = [{path:'/about/:id',compontent:About,beforeEnter:(to,from){//拒绝导航reture false}}]

组件内的路由配置API

可以为路由组件添加一下API

  • beforeRouteEnter
  • beforeRouteUpdate
  • beforeRouteLeave
const About = {template:'...',beforeRouteEnter(to,from){// 在渲染该组件的对应路由被验证前调用// 不能获取组件实例this,因为此守卫执行时,组件实例还没被创建},beforeRouteUpdate(to,from){//当前路由改变,但是该组件被复用时调用,比如/user/1,/user/2查询的用户信息不同,可以访问this},beforeRouteLeave(to,from){//在离开渲染该组件的对应路由时调用,可以访问组件实例thisconst answer = window,confirm('Do you want to leave?');if(!ansuer) return false}}

路由元信息

有时想把一些附加信息附加到路由上,比如过渡名称
谁可以访问路由等,这些都可以通过接受属性对象的meta属性来实现,并且它可以在路由地址和导航守卫上都被访问到。

    const routes = [{path:'/about',component:About,children:[{path:'new',component:PostNew,meta:{requiresAuth:false //可以在路由守卫中判断这个字段,做逻辑处理}},{path:':id',component:PrivacyPost,meta:{requiresAuth:true}}]}]

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

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

相关文章

VUE宝典之el-dialog使用

文章目录 🍁前言🍁el-dialog简介🍁el-dialog属性🍁el-dialog示例🍁父子组件值传递示例 🍁前言 el-dialog是Element UI库中的一个重要组件,用于在Vue应用程序中创建弹出框。它提供了一组实用的属…

【Dubbo3云原生微服务开发实战】「Dubbo前奏导学」 RPC服务的底层原理和实现

RPC服务 RPC服务介绍RPC通信模式RPC架构组成RPC技术要点RPC通信技术选项分析RPC实战开发6大基础组件基础组件之Guava基础组件之Hutools基础组件之ReflectionASM基础组件之FastJSON/FastJSON2基础组件之FST相比FastJSON的优势 基础组件之Commons-Codec RPC框架层面选项分析RPC组…

持续集成交付CICD:Jenkins配置Nexus制品上传流水线

目录 一、实验 1.Jenkins配置制品上传流水线 二、问题 1.上传制品显示名称有误 一、实验 1.Jenkins配置制品上传流水线 (1) 新建流水线项目 (2)描述 (3)添加参数 (4)查看构建首页 (5&…

实现简易的一对一用户聊天

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector…

Vue.js - 界面设计工具和UI组件库

ViewDesign ViewDesign是一款开源的在线设计工具,它主要提供了一种可视化的界面设计方法,可以帮助设计师和开发人员更高效地完成界面设计和开发工作。 ViewDesign的特点是支持在线协作,可以多人同时进行设计,提高了设计效率&…

Redis课程:黑马点评

文章目录 基于Redis实现短信登录商户查询缓存优惠券秒杀一人一单 分布式锁Redis分布式锁误删情况说明解决Redis分布式锁误删问题使用lua脚本解决分布式锁的原子性问题 基于阻塞队列实现秒杀优化Redis消息队列优化秒杀业务达人探店参考 本文是根据黑马程序员的视频课程 黑马程序…

vscode 开发c环境

前置条件: 1.vscode安装C/C Extension Pack扩展 2.安装gcc或者clang开发环境 在工程.vscode目录下创建task任务文件 tasks.json {"tasks": [{"type": "cppbuild","label": "build","command": &q…

Kubernetes架构及核心部件

文章目录 1、Kubernetes集群概述1.1、概述1.2、通过声明式API即可 2、Kubernetes 集群架构2.1、Master 组件2.1.1、API Server2.1.2、集群状态存储2.1.3、控制器管理器2.1.4、调度器 2.2、Worker Node 组件2.2.1、kubelet2.2.2、容器运行时环境2.2.3、kube-proxy 2.3、图解架构…

深入解析Node.js:V8引擎、事件驱动和非阻塞式I/O

文章目录 1. 引言2. 什么是Node.js?3. V8引擎3.1 V8引擎简介3.2 V8引擎的特点 4. 事件驱动4.1 事件循环4.2 事件触发与监听4.2.1 代码示例 4.3 异步回调4.3.1 代码示例 5. 非阻塞式I/O5.1 非阻塞式I/O的优势5.2 异步与同步的对比5.2.1 同步I/O的代码示例5.2.2 异步I…

前端知识笔记(三)———CSS核心功能手册:从熟悉到精通

参考HTML代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wi…

指针 注意事项

指针变量的本质是用来放地址&#xff0c;而一般的变量是放数值的。 1、指针的定义&#xff08;两种形式&#xff09; ①int x3; int *p&x ②int x; int *p&#xff1b; x3&#xff1b;p&x int*p中 *p和p的差别&#xff1a;简单说*p是数值&#xff0c;p是地址&a…

Linux 系统上配置 SSH 密钥

1. 生成 SSH 密钥 打开终端&#xff0c;运行以下命令来生成 SSH 密钥&#xff1a; ssh-keygen -t rsa -b 4096 -C "wqzbxhexample.com" 替换 "wqzbxhexample.com" 为你在 GitHub 注册时使用的邮箱地址。 2. 添加 SSH 密钥到 SSH 代理 运行以下命令来启…

ROS gazebo 机器人仿真,环境与robot建模,添加相机 lidar,控制robot运动

b站上有一个非常好的ros教程234仿真之URDF_link标签简介-机器人系统仿真_哔哩哔哩_bilibili&#xff0c;推荐去看原视频。 视频教程的相关文档见&#xff1a;6.7.1 机器人运动控制以及里程计信息显示 Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 本文对视频教程…

java物联网协议解析插件,java iot对接解析框架.java物联网架构的设计思路

一般来说&#xff0c;物联网开发则hi对硬件设备进行信息采集&#xff0c;所以建议技术栈如下&#xff1a; 物联网开发技术栈一般如下&#xff1a; nettyspringbootrocketmqredismagic-byte 其中netty用于tcp和数据接入 rockemqt用于消息临时储存中转&#xff0c; springboot就…

【论文精读】REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS

REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS 前言ABSTRACT1 INTRODUCTION2 REACT: SYNERGIZING REASONING ACTING3 KNOWLEDGE-INTENSIVE REASONING TASKS3.1 SETUP3.2 METHODS3.3 RESULTS AND OBSERVATIONS 4 DECISION MAKING TASKS5 RELATED WORK6 CONCLUSI…

phpstudy搭建WordPress教程

一、phpstudy新建配置WordPress 打开phpstudy&#xff0c;启动Apache&#xff08;或者Nginx&#xff09;和MySQL服务 来到数据库部分&#xff0c;点击[创建数据库]&#xff0c;填写新建数据库的名称&#xff0c;用户名以及密码&#xff0c;完成后点击确认 来到网站部分&#x…

Course2-Week4-决策树

Course2-Week4-决策树 文章目录 Course2-Week4-决策树1. 决策树的直观理解2. 构建单个决策树2.1 熵和信息增益2.2 构建决策树——二元输入特征2.3 构建决策树——多元输入特征2.4 构建决策树——连续的输入特征2.5 构建回归树——连续的输出结果(选修)2.6 代码实现-递归构建单个…

解决 php 连接mysql数据库时报错:Fatal error: Class ‘mysqli’ not found in问题

在使用php对mysql进行连接的过程中&#xff0c;出现了Fatal error: Uncaught Error: Class "mysqli" not found in的问题 解决方案 这个错误通常表示您的PHP代码中缺少MySQL扩展或者没有启用MySQL扩展。 我们首先确认一下PHP环境中已经安装了MySQL扩展。检查一下自己…

Redis如何做内存优化?

Redis如何做内存优化&#xff1f; 1、缩短键值的长度 缩短值的长度才是关键&#xff0c;如果值是一个大的业务对象&#xff0c;可以将对象序列化成二进制数组&#xff1b; 首先应该在业务上进行精简&#xff0c;去掉不必要的属性&#xff0c;避免存储一些没用的数据&#xff1…

rust详解

前言 rust 学习曲线非常陡峭&#xff0c;但是基本语法也还算挺好理解&#xff0c;自动内存管理有点类似智能指针&#xff0c;基本看一下语法入门就可以大概理解&#xff0c;但是唯独宏很难理解&#xff0c;语法非常晦涩。但是功能非常强大。声明宏类似于c语言的宏处理&#xf…