vue-5:router

news2025/1/24 17:51:10

router路由配置,使用

在vue-cli构建的vue单页面应用中,需要借助vue-router库实现路由功能

配置路由 (构建项目时要下载)

router文件夹下创建:index.js,routerConfig.js配置路由

路由懒加载:

按需加载:当你实际访问哪个路由,路由对应的组件文件才会加载,提升了应用访问速度,提升用户体验

为什么用路由懒加载 ? npm run build 不用路由懒加载,会打包成一个js,一个css文件,不易加载 ;路由懒加载后,每个组件都会生成一个js文件

views中写路由组件:main.js下导入路由管理对象,应用路由,配置路由表

 index.js

// index.js
import { createRouter, createWebHistory,createWebHashHistory } from 'vue-router'

// 导入路由配置表
import routes from './routerConfig'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),//路由模式
  routes, //应用路由配置表
})

export default router

 routerConfig.js

单条路由配置 嵌套路由配置 重定向:path: '/home', redirect: 'homepage' 404页面

// import Index from '../views/Index.vue'
// import Login from '../views/Login.vue'
// import NotFound from '../views/NotFound.vue'
// import Detail from '../views/Detail.vue'

// import Home from '../views/Index/Home.vue'
// import GWC from '../views/Index/GWC.vue'
// import Mine from '../views/Index/Mine.vue'

// 路由懒加载/延迟加载

// 用懒加载导入的方式处理每个组件, 每个组件都会单独生成一个js文件, 当你实际访问哪个路由, 对应的组件文件才会加载, 否则不加载
var Index = ()=> import( "../views/Index.vue" )
var Login = ()=> import( "../views/Login.vue" )
var NotFound = ()=> import( "../views/NotFound.vue" )
var Detail = ()=> import( "../views/Detail.vue" )

var Home = ()=> import( "../views/Index/Home.vue" )
var GWC = ()=> import( "../views/Index/GWC.vue" )
var Mine = ()=> import( "../views/Index/Mine.vue" )

//路由配置表
export default [
    {
        path:'/index',
        component: Index,
        children:[ //嵌套路由
            {
                path:'/index/home',
                component: Home,
            },
            {
                path:'/index/gwc',
                component: GWC,
            },
            {
                path:'/index/mine',
                component: Mine,
            },
            {
                path:'/index',
                redirect:'/index/home' //重定向
            },
            {
                // path:'*', //VueRouter3中的写法
                path:'/index/:error(.*)',
                component: NotFound, //404
            },
        ]
    },
    {
        path:'/login',
        component: Login
    },
    {
        // path:'/detail/:id',
        path:'/detail',
        component: Detail
    },
    {
        path:'/',
        redirect:'/index' //重定向
    },
    {
        path:'/:error(.*)',
        component: NotFound, //404
    },
    
]

路由组件:

<router-view /> :充当 路由渲染出口

<router-link /> :用来跳转:最终渲染 成 a 标签

路由实例

$router 路由管理对象,负责跳路由

$route 路由对象,负责存储路由信息(地址,参数)

  • 跳路由两种方式

    • 标签式导航: 借助router-link 渲染的a标签来跳路由:<router-link to="/index/home">首页</router-link>

    • 编程式导航: <div @click="toGWC">购物车</div> 点击后动态路由传参

跳路由传参:建议动态路由传参

this.$router.go() 跳转一个路由 this.$router.replace() 跳转一个路由,不会向history中添加新的记录

一:动态路由传参

接参 this.$route.params.id

二:固定路由传参query

传参        this.$router.push( { path:"/detail",query:{参数id:id } } )

接参 this.$route.query.id  

// 跳转路由传参
methods: {
        toDetail(id) {
            console.log(id);
            //方式一:动态路由,路由地址需要接收 添加/:id
            // 跳转的地址需要route 接收: this.$route.params.id
            this.$router.push('/detail/'+id)

            //方式二:固定路由,query
            // this.$router.push({ path:'/detail',query: {id} })
        }
    }

接收

<template>
    <div class="detail">
        <!-- 动态路由接收参数 -->
        详情页面-{{ this.$route.params.id }}
        <!-- 固定路由接收参数 -->
        <!-- 详情页面-{{ this.$route.query.id }} -->
    </div>
</template>

<script>
export default {
    // 查看挂载没
    mounted() {
        console.log(this.$route.params.id)
    },

    methods: {
        
    },
};
</script>

页面顶部加载进度条:

nprogress:插件实现,页面顶部进度条

npm中搜索安装使用:

npm install nprogress --save

在俩守卫函数配置插件使用
NProgress.start();
NProgress.done(); 

路由守卫/导航守卫/路由钩子/路由卫士

他是一组钩子函数 就是再路由跳转的特定阶段自动执行的函数

主要对页面的跳转功能进行限制(没有登录就不能进入制定页面)

守卫函数:

   全局前置守卫函数 beforeEach

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

      to -- 去哪里
      from -- 从哪里来
      next()  -- (放不放行)
   })

router.beforeEach((to,from,next)=>{
  console.log(to)
  console.log(from)
  if(to.path=="/denglu"||to.path=="/zhuce"){
    next()
  }else{
      alert("当前未vip页面请您登录后再访问")
      next("/denglu")
  }
  
})

全局后置守卫函数 afterEach

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

})

 beforeRouteEnter(to,from,next){
        console.log(to);
        console.log(from);
        next()

    },
    beforeRouteLeave(to,from,next){
           console.log(to);
           console.log(from);

           if(confirm("确定离开吗")){
            next()
           }else{
                next(false)
           }
    }

}

路由独享守卫 beforeEnter

{
    path: '/shop',
    name: 'Shop',
    component: Shop,
    beforeEnter(to,from,next){
      console.log(to);
      console.log(from);
      alert("您没有登录请你登录后访问")
      next("/denglu")
    }
  },

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

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

相关文章

轻松掌握线程基础知识和四种创建方式及区别

1、线程与进程 2、并行与并发 3、创建线程 1、方式一&#xff1a;继承Thread类 2、方式二&#xff1a;实现Runnable接口 3、方式三&#xff1a;实现Callable接口 4、方式四&#xff1a;线程池创建线程&#xff08;项目中使用的方式&#xff09; 5、Runnable和Callable区别 6、…

在 Windows 10/11、7/8 上清空后从回收站恢复已删除文件的 6 种方法

Windows&#xff08;包括 Windows 11、10、8、7 和 Vista&#xff09;上的回收站用于回收您打算删除的不需要的文件。如果您删除了一些重要的文件或文件夹并且不小心清空了回收站&#xff0c;您仍然有机会恢复从回收站中删除的文件。这是一个教程&#xff0c;将阐明“如何在清空…

HTML第一天

HTML第一天 我们接下来是进行的网页开发网页的相关概念: 什么是网页?什么是HTML?网页的形成? 什么是网页&#xff1a; 1.网站是指在因特网上根据一定的规则&#xff0c;使用 HTML 等制作的用于展示特定内容相关的网页集合。 2.网页是网站中的一“页”&#xff0c;通常是…

钓鱼圈子钓点钓场鱼漂钓位小程序开发

钓鱼圈子钓点钓场鱼漂钓位小程序开发 功能: 关注好友功能。一键导航至钓鱼点。学习交流。鱼票功能是本系统的—大亮点&#xff0c;此功能可应用于鱼场举办活动比赛以及日常预定位置&#xff0c;在小程序进行预定&#xff0c;线下核销。系统拥有商城功能&#xff0c;可以为运营…

深度学习环境配置系列文章(三):配置VS Code和Jupyter的Python环境

深度学习环境配置系列文章目录 第一章 专业名称和配置方案介绍 第二章 Anaconda配置Python和PyTorch 第三章 配置VS Code和Jupyter的Python环境 第四章 配置Windows11和Linux双系统 第五章 配置Docker深度学习开发环境 第三章文章目录 深度学习环境配置系列文章目录前言一、VS…

C语言中链表经典面试题目——复制带随机指针的链表

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;数据结构​​​​​​​ &#x1f525;座右铭&#xff1a;“不…

计算机数据表示和数据转换

1、计算机数据表示和数据转换 送入计算机的数字、字母和符号等信息必须转换成0、1组合的二进制形式形式才能被计算机所接收、存储和运算。能够进行计算的数据并且能得出一个明确的数值叫数值数据&#xff0c;其余信息是非数值数据。 1.1 数值数据的表示 数值数据的计数方式是进…

SpringBoot的自动装配

前言 众所周知&#xff0c;SpringBoot的自动装配是其核心功能之一&#xff0c;SpringBoot提供了许多自动配置类&#xff0c;我们通常会有这样的一个概念&#xff1a;“当应用程序启动时&#xff0c;SpringBoot会扫描路径上的自动配置类进行加载&#xff0c;从而大大简化了项目…

小白量化《穿云箭集群量化》(6)巡航导弹策略

小白量化《穿云箭集群量化》&#xff08;6&#xff09;响尾蛇导弹 响尾蛇导弹是非常著名的武器装备&#xff0c;响尾蛇导弹发射者只需雷达瞄准和发射动作&#xff0c;发射动作完成尽快脱离战场保全自身安全。响尾蛇导弹会自动追踪敌机&#xff0c;直至击毁敌机。 证券交易犹如…

MySQL基础(三十一)数据库其它调优策略

1 数据库调优的措施 1.1 调优的目标 尽可能 节省系统资源 &#xff0c;以便系统可以提供更大负荷的服务。&#xff08;吞吐量更大&#xff09;合理的结构设计和参数调整&#xff0c;以提高用户操作 响应的速度 。&#xff08;响应速度更快&#xff09;减少系统的瓶颈&#xf…

day37_jdbc

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 零、 复习昨日 见晨考 一、作业 package com.qf.homework;import com.qf.model.User;import java.sql.Connection; import java.sql.DriverManager; impo…

【笔试强训】(红与黑,五子棋,走迷宫)DFS+BFS算法解析

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: 笔试强训专栏 深度优先遍历&#xff08;Depth First Search, 简称 DFS&#xff09; 与广度优先遍历&#xff08;Breath First Search&#xff09;是图论中两种非常重要的算法。 本文就以习题的方式来给…

STM32F10X--EXTI--外部中断/事件控制器

一、EXTI是什么&#xff1f; EXTI&#xff08;External interrupt/event controller&#xff09;—外部中断/事件控制器&#xff0c;管理了控制器的20 个中断/事 件线。每个中断/事件线都对应有一个边沿检测器&#xff0c;可以实现输入信号的上升沿检测和下降沿的 检测。EXTI 可…

SpringMVC的基础知识

创建SpringMVC项目 SpringMVC项目其实和SpingBoot项目差不多,就多引入了一个SpringWeb项目而已拉 可以看这篇博客,创建的就是一个SpringMVC项目--创建项目の博客 SpringMVC是啥 Spring是啥相信大家都了解 啥是MVC呢?MVC是Model View Controller的缩写 我们分开看这三个词Model…

【框架源码】Spring源码核心注解@Conditional原理及应用

1.什么是Conditional注解 Conditional来源于spring-context包下的一个注解。通过Conditional配置一些条件判断&#xff0c;当所有条件都满足时&#xff0c;被该Conditional注解标注的目标才会被Spring处理。 例如根据当前环境、系统属性、配置文件等条件来决定是否注册某个Bea…

PostgreSQL-如何创建并发索引

索引简介 索引是数据库中一种快速查询数据的方法。索引中记录了表中的一列或多列值与其物理位置之间的对应关系&#xff0c;就好比一本书前面的目录&#xff0c;通过目录中页码就能快速定位到我们需要查询的内容。 建立索引的好处是加快对表中记录的查找或排序&#xff0c;但…

Mysql进阶-索引事务相关

文章目录 数据库存储引擎INNODBMYISAM 索引索引分类索引语法SQL性能分析SQL执行频率慢查询profile详情explain 执行计划**Etrax**(额外信息&#xff09;using index conditionusing where&#xff1b;using indexusing where 索引使用规则最左前缀法则范围查询 索引失效情况1.索…

conda故障处理

【已解决】subprocess-exited-with-error 准备元数据(setup.py)…错误 错误:subprocess-exited-with-error python setup.py egg_info运行失败。 │退出代码:10 <╰>[1行输出] 请指定——curl-dir/path/to/built/libcurl [输出结束] 注意:此错误源自子进程&#xf…

Halcon 形态学(膨胀(Dilation)、腐蚀(Erosion))

文章目录 1 形态学概念2 膨胀(Dilation) 算子介绍3 腐蚀(Erosion)算子介绍4 膨胀腐蚀 示例15 腐蚀膨胀 示例26 示例原图7 补充:结构元素概念1 形态学概念 图像的形态学处理是对图像的局部像素进行处理,用于从图像中提取有意义的局部图像细节。 通过改变局部区域的像素形态…

单链表OJ题:LeetCode--面试题:02.04 分割链表

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;今天给大家带来的是LeetCode面试题&#xff1a;02.04.分割链表 数 据 结 构&#xff1a;数据结构专栏 作 者&#xff1a;stackY、 LeetCode &#xff1a;LeetCode刷题训练营 LeetCode面试题&#xff1a;02.04.分割…