当前位置: 首页 > news >正文

Vue Router(二)

目录

一、嵌套路由

1、路由定义

2、代码例子

3、重定向

二、懒加载

1、缘由

2、代码例子

三、导航守卫

1、全局前置守卫

2、全局后置守卫

3、meta元信息

四、生命周期

1、解释

2、执行顺序

3、例子

五、keep-alive组件缓存(保活)

1、介绍

2、属性

3、代码例子


一、嵌套路由

1、路由定义

(1)通过路由配置,定义好组件在路由层面映射的嵌套层级,使用children定义子路由

(2)注意:子路由中的path不以/开头,若写了/则会提升为一级路由

2、代码例子

(1)App.vue文件

<h1><router-link to="/home">主页</router-link> |<router-link to="/news">新闻</router-link>
</h1>
<router-view />

(2)router文件夹下index.js文件

import Vue from "vue";
import VueRouter from "vue-router";
import HomeView from "../views/HomeView.vue";
import Hot from "../views/news/hotPage.vue"
import Tnews from "../views/news/TnewsPage.vue"
import News from "../views/news/NewsPage.vue"Vue.use(VueRouter);const routes = [{path: "/",name: "home",component: HomeView,},{path: "/news",name: "news",component: News,children: [{path: "hot", //注意路径没有/component: Hot,},{path: "tnews", //注意路径没有/component: Tnews,},],},
];const router = new VueRouter({mode: "history",base: process.env.BASE_URL,routes,
});export default router;

NewsPage.vue文件

<nav><router-link to="/news/hot">热点新闻</router-link> | <router-link to="/news/tnews">国际新闻</router-link>
</nav>
<router-view />

3、重定向

routes的每一层都可以重定向

const routes = [{path: "/",redirect:"Home",//对应component,注意Home要引号引起来},{path: "/news",name: "news",component: News,children:[{path:'',redirect:"Hot",},{path:'hot',component:Hot,},{path:'tnews',component:Tnews,},],},
];

二、懒加载

1、缘由

①问题:当每个组件都在定义路由前import ,打包构建项目时,js包会变得非常大,影响页面加载
②解决:把不同路由对应的组件分割成不同的代码块,当路由被访问时才加载对应组件,会更高效
③格式:()=>import("vue文件路径")

2、代码例子

const routes = [{path: "/",redirect: { name: "Home" }, //重定向也要改格式},{path: "/home",name: "Home",component: () => import("@/views/HomePage.vue"),},
];

三、导航守卫


作用:通过跳转或取消的方式守卫导航,有些页面需要权限校验才能进入
多种方式:全局,单个路由独享,组件级


1、全局前置守卫

(1)场景:路由开始跳转前(未进行跳转时),需要在回到函数中手动调用next(),放行路由

(2)格式

router.beforeEach((to,from,next)=>{})

①to:即将要进入的目标路由对象
②from:当前导航要离开的路由
③next('/'):一定要调用该方法resolve这个钩子,执行效果依赖next方法的调用参数

  • next():放行路由跳转,会跳转到原定目标页面
  • next(false):中断当前的导航,如果浏览器的URL改变了,那么URL会重置到from路由对应的地址
  • next('/')、next({ path: '/' }):路由重定向,可以向next传递任意用在<router-link>的【to属性值】或router.push的选项

(3)注意

必须确保next函数在任何给定的导航守卫中都被严格调用一次

①代码例一

router.beforEach((to,form,next)=>{//如果未登录且目标不是登录页,则重定向到登录页,且return掉函数if(to.name !== 'Login' && !isAuthenticated) return next({name:'Login'})//放行路由next()
})

②代码例二

router.beforeEach((to,from,next)=>{console.log("to",to);console.log(from);next()
})

2、全局后置守卫

(1)场景:进入页面后的守卫,与前置守卫不同的是,没有next函数,因此不会改变导航

(2)格式

router.afterEach((to, from) => {// ...
})

①to:当前导航进入的目标路由对象
②from:当前导航正要离开的路由

3、meta元信息

说明:浏览器每个页面的标题

{path:'/home',name:"Home",meta:{//元信息title:'主页'},component:()=>import("@/views/HomePage.vue"),
},

四、生命周期


图解生命周期


1、解释

(1)beforeCreate()
周期节点:组件实例被创建之初,组件的属性生效之前
注意:此时无实例,无dom渲染
创建实例之前执行的钩子事件

(2)created()
周期节点:组件实例已经完全创建,属性也绑定,但真实dom还没有生成
注意:此时仅能访问到实例数据,如:dada、method等

(3)beforeMount()
周期节点:DOM刚要渲染
注意:此时仅能访问到实例数据,如:data、method等

(4)mounted()
周期节点:DOM渲染结束
注意:此时能访问到实例数据和页面上的DOM

(5)beforeUpdate()
周期节点:组件数据更新之前,DOM未重新渲染

(6)update()
周期节点:组件数据更新之前,DOM已重新渲染

(7)activated()
【keep-alive专属】,缓存的组件被激活时,钩子函数

(8)deactivated()
【keep-alive专属】,缓存的组件未激活时,钩子函数

(9)beforeDestroy()
周期节点:组件实例销毁前

(10)destroyed()
周期节点:组件销毁后

2、执行顺序

3、例子

created () {console.log('新闻页面创建');
},
destroyed () {console.log('新闻页面销毁');
},

五、keep-alive组件缓存(保活)

1、介绍

使用<router-view>切换页面,组件会被摧毁并经历完整的生命周期
但是有时需要组件数据能够保存,而不是每次进入就重新获取数据进行页面渲染

<keep-alive><router-view />
</keep-alive>

2、属性

①include:字符串或正则表达式,名称匹配的组件会被缓存。
②exclude:字符串或正则表达式,名称匹配的组件都不会被缓存。
③max: 数字,最多可以缓存多少组件实例。

<keep-alive include="HomePage"><router-view />
</keep-alive>

3、代码例子

<!-- Home.vue -->
<template>
<div><nav><router-link to="/home/index">首页</router-link><router-link to="/home/mine">我的</router-link></nav><!-- 失活的组件将会被缓存!--><keep-alive><router-view /></keep-alive>
</div>
</template>

相关文章:

Vue Router(二)

目录 一、嵌套路由 1、路由定义 2、代码例子 3、重定向 二、懒加载 1、缘由 2、代码例子 三、导航守卫 1、全局前置守卫 2、全局后置守卫 3、meta元信息 四、生命周期 1、解释 2、执行顺序 3、例子 五、keep-alive组件缓存&#xff08;保活&#xff09; 1、介…...

ELK整合springboot(第二课)

一、创建一个springboot的项目 pom文件如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLo…...

运维常见的22个故障排查和10个问题解决技巧大汇总!

作为运维&#xff0c;多多少少会碰见这样那样的问题或故障&#xff0c;从中总结经验&#xff0c;查找问题&#xff0c;汇总并分析故障的原因&#xff0c;这是一个运维工程师良好的习惯。每一次技术的突破&#xff0c;都经历着苦闷&#xff0c;伴随着快乐&#xff0c;可我们还是…...

解决 TensorFlow 2.x 中的 “AttributeError: module ‘tensorflow‘ has no attribute ‘placeholder‘“ 错误

项目场景&#xff1a; 在使用 TensorFlow 框架实现深度学习应用时&#xff0c;可能会遇到以下错误&#xff1a; AttributeError: module tensorflow has no attribute placeholder问题描述 在 TensorFlow 1.x 版本中&#xff0c;placeholder 函数用于创建占位符张量。然而&a…...

新风机注意事项有哪些?

选择和使用新风机时&#xff0c;有几个关键注意事项需要牢记&#xff1a; 安装位置&#xff1a;新风机的安装位置很重要。通常情况下&#xff0c;应将其安装在室外以避免室内产生噪音和减少室内的体积占据。确保选择合适的安装位置&#xff0c;以便新风机能够顺利引入新鲜空气。…...

GitHub基础

1、仓库是什么意思&#xff1f;仓库拥有者是谁&#xff1f; 在软件开发或版本控制系统中&#xff0c;"仓库"&#xff08;Repository&#xff09;是指存储项目代码、配置文件、文档等相关文件的地方。它可以看作是一个中央存储库&#xff0c;用于管理和跟踪项目的各个…...

读书笔记--未来简史关键金句和阅读感悟

借着国庆假期&#xff0c;终于有时间研读了尤瓦尔.赫拉利的《未来简史》&#xff0c;作者的写作方式、文笔、观察视角都是我喜欢的类型&#xff0c;作者从古到今&#xff0c;谈到了上帝、神、宗教、科技、生物、智人到未来的超人智神&#xff08;数据主义&#xff09;&#xff…...

【Vue2.0源码学习】生命周期篇-销毁阶段(destroy)

文章目录 1. 前言2. 销毁阶段分析3. 总结 1. 前言 接下来到了生命周期流程的最后一个阶段——销毁阶段。从官方文档给出的生命周期流程图中可以看到&#xff0c;当调用了vm.$destroy方法&#xff0c;Vue实例就进入了销毁阶段&#xff0c;该阶段所做的主要工作是将当前的Vue实例…...

代理IP与Socks5代理在多领域的卓越应用

随着数字化时代的到来&#xff0c;网络工程师在跨界电商、爬虫、出海业务、网络安全和游戏等多个领域中扮演着至关重要的角色。在这些领域中&#xff0c;代理IP与Socks5代理技术已经成为网络工程师的得力助手&#xff0c;本文将深入探讨它们在技术世界中的卓越应用。 1. 跨界电…...

kafka怎么实现零拷贝(Zero-Copy)的?

Kafka 实现零拷贝&#xff08;Zero-Copy&#xff09;主要依赖于操作系统和底层网络库的支持&#xff0c;而不是特定的算法。这是因为零拷贝是一种优化数据传输的技术&#xff0c;通常是通过操作系统和硬件来实现的。以下是 Kafka 如何实现零拷贝的一般原理&#xff1a; 直接内存…...

Hive【Hive(四)函数-单行函数】

函数 函数简介 方便完成我们一些复杂的操作&#xff0c;就好像我们 Spark 中的 UDF 函数&#xff0c;避免用户反复写逻辑。 Hive 提供了大量的内置函数&#xff0c;主要可以分为以下几类&#xff1a; 单行函数聚合函数炸裂函数窗口函数 下面的命令可以查看内置函数的相关…...

C语言学生成绩录入系统

一、系统概述 该系统是一个由链表创建主菜单的框架&#xff0c;旨在快速创建学生成绩录入系统的主菜单结构。其主要任务包括&#xff1a; 实现链表的创建、插入和遍历功能&#xff0c;用于存储和展示学生成绩录入系统各个模块的菜单项。 2. 提供用户友好的主菜单界面&#xf…...

操作系统对内存的管理:分配与回收,虚拟内存,内存容量的扩充,内存保护,补充(链接方式、装入方式)

内存&#xff1a;即内存条&#xff0c;也称主存储器&#xff08;简称主存&#xff09;&#xff0c;用于存放数据。 为了缓和CPU和外存&#xff08;磁盘&#xff09;的速度矛盾&#xff0c;外存的程序先放入内存才能被CPU处理。 内存地址从0开始&#xff0c;每个内存地址对应一…...

[开源]基于Vue的拖拽式数据报表设计器,为简化开发提高效率而生

一、开源项目简介 Cola-Designer 是一个 基于VUE&#xff0c;实现拖拽 配置方式生成数据大屏&#xff0c;为简化开发、提高效率而生。 二、开源协议 使用GPL-2.0开源协议 三、界面展示 概览 部分截图&#xff1a; 四、功能概述 特性 0 代码 实现完全拖拽 配置式生成…...

微信小程序——CSS3渐变

SS3 渐变&#xff08;gradients&#xff09;可以在两个或多个指定的颜色之间显示平稳的过渡。CSS3 定义了两种类型的渐变&#xff08;gradients&#xff09;&#xff1a; 说明 1、线性渐变&#xff08;Linear Gradients&#xff09;- 向下/向上/向左/向右/对角方向&#xff1…...

CCF中国开源大会专访|毛晓光:“联合”是开源走向“共赢”的必由之路

受访嘉宾 | 毛晓光 记者 | 朱珂欣 2023 CCF 中国开源大会&#xff08; CCF ChinaOSC &#xff09;拟于 2023 年 10 月 21 日至 22 日在湖南省长沙市北辰国际会议中心召开。 作为第二届 CCF 中国开源大会&#xff0c;本届大会将组织特邀报告、高峰论坛和领域分论坛等不同类…...

多校联测11 8ady

题目大意 有一个排列 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1​,a2​,…,an​&#xff0c;我们现在进行如下操作&#xff1a; for(int i1;i<n-m1;i) sort(ai,aim);设最后的结果为 b 1 , b 2 , ⋯ , b n b_1,b_2,\cdots,b_n b1​,b2​,⋯,bn​&#xff0c;求满足条件的…...

【软考】9.1 顺序表/链表/栈和队列

《线性结构》 顺序存储和链表存储 每个元素最多只有一个出度和一个入度&#xff0c;表现为一条线状链表存储结构&#xff1a;每个节点有两个域&#xff0c;即数据&#xff0c;指针域&#xff08;指向下一个逻辑上相邻的节点&#xff09; 时间复杂度&#xff1a;与其数量级成正…...

来 来 来 国家开放大学模拟题型 训练

试卷代号&#xff1a;2110 行政法与行政诉讼法 参考试题 一、单项选择题&#xff08;每小题只有一项正确答案&#xff0c;请将正确答案的序号填在括号内。每小题2分&#xff0c;共20分&#xff09; 1.下列案件中属于行政诉讼受案范围的是( )。 A.因人民政府对某工作人员的…...

【ONE·Linux || 多线程(二)】

总言 多线程&#xff1a;生产者消费者模型与两种实现方式&#xff08;条件变量、信号量&#xff09;、线程池。 文章目录 总言4、生产者消费者模型4.1、基本概念4.2、基于BlockingQueue的生产者消费者模型&#xff08;理解条件变量&#xff09;4.2.1、单生产者单消费者模式&am…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...