简单整理vue-router,路由知识

news2025/6/20 1:22:13

1.项目中引入

1.1 安装注册

在这里插入图片描述

1.2 封装抽离

在main.js中 书写,会造成单个js文件过于臃肿的情况,需要将路由配置部分抽离出来,在src下新建router文件夹,新建index.js文件

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'
import myMap from '../views/mymap.vue'


Vue.use(VueRouter)

const routes = [
  {
    path: '/',//路由重定向
    name: 'home',
    component: HomeView
  },
  {
    path: '/mymap',
    name: 'myMap',
    component: myMap
  },
]
const router = new VueRouter({
  //mode: 'history' //不写就是默认哈希模式,写了就是历史模式
  base: '/test/', //nginx部署时需要的配置项
  routes
})

export default router

通过export default 将router实例导出,再带入到main.js中
在这里插入图片描述

1.3 路由懒加载

其中可以采用路由懒加载的写法去加载页面,提高页面初始化速度

  {
    path: '/about',
    name: 'about',
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  },
  • component 是路由配置中的一个字段,用于指定当前路由的组件。
  • () => import(‘path/to/component’) 是 ES6 中的箭头函数语法,用于定义一个动态导入,意味着在需要时才会加载对应的组件。
  • /* webpackChunkName: “about” */ 是 webpack 的注释语法,用于为动态导入的文件指定一个 chunk 名称,以便在构建时生成对应的代码块。
  • ‘…/views/AboutView.vue’ 是要动态导入的组件的路径。

2. 路由层级

项目中的路由层级基本不会超过三级,以一个demo示例

const router = new VueRouter({
  routes: [
    {
      path: '/',
      component: MainLayout,
      children: [
        {
          path: '',
          component: Home
        },
        {
          path: 'about',
          component: About
        },
        {
          path: 'products',
          component: Products,
          children: [
            {
              path: 'detail/:id',
              component: ProductDetail
            }
          ]
        }
      ]
    },
    {
      path: '/login',
      component: Login
    }
  ]
})

3.路由跳转/传参

3.1 声明式导航

在这里插入图片描述

//跳转到配置的路径为'/index'的页面
<router-link to="/index">点我跳转</router-link>
3.1.1query参数传递
//A页面查询参数传递
<router-link to="/index?words=123">点我跳转</router-link>

//B页面接收参数
console.log(this.$route.query.words, 'message')//打印结果123 message
//动态传递query参数,A页面
<router-link :to="{name:'weChat',query:{message:message}}">去聊天室</router-link>

//接收数据,B页面
console.log(this.$route.query.message, 'message')
3.1.2 params参数传递
//A页面传参
<router-link :to="{name:'weChat',params:{message:message}}">去聊天室</router-link>

//B页面接收参数
console.log(this.$route.params.message, 'message')

3.2 编程式导航

3.2.1 根据path传参传递query数据
//A页面传参
   todoSomething () {
      this.$router.push({
        path: '/weChat',
        query: {
          id: this.message
        }
      })
    }
//B页面接收
 console.log(this.$route.query.id, 'message')
3.2.2 根据path传参传递params数据(不推荐)

在实际使用中,通过 path 传递参数时,并不能直接在目标页面的组件中通过 $route.params 获取到参数值,因为 path 传递参数是基于路由配置中动态参数的匹配,而非通过 params 属性传递参数。

//路由配置
{
    path: '/weChat/:id',
    name: 'weChat',
    component: weChat
  }
//A页面传参

   todoSomething () {
   	  const id = this.message
      this.$router.push({
        path: `/weChat/${id}`,
      })
    }
//B页面接收
 console.log(this.$route.params.id, 'message')
3.2.3 根据name传参传递query数据
//A页面传参
 todoSomething () {
      this.$router.push({
        name: 'weChat',
        query: {
          id: this.message
        }
      })
    }
    //B页面接收
 console.log(this.$route.query.id, 'message')
3.2.4 根据name传参传递params数据
//A页面传参
   todoSomething () {
      this.$router.push({
        name: 'weChat',
        params: {
          id: this.message
        }
      })
    }
//B页面接收
 console.log(this.$route.params.id, 'message')

4. router与route

$router 对象:代表 Vue Router 实例,可以用来导航到不同的路由。
我们可以通过$router.push()$router.replace()、$router.go() 等方法来控制路由跳转。
通常在组件内部通过 this.$router 来访问该对象。

$route 对象:代表当前活跃的路由对象,可以用来访问当前路由的信息。例如当前路径、参数、查询参数等。
我们可以通过 $route.path、$route.params、$route.query 等属性来获取当前路由的信息。
通常在组件内部通过 this.$route 来访问该对象。

5.动态添加路由

// 定义要添加的路由
const newRoute = {
  path: '/new-route',
  component: () => import('./components/NewRoute.vue')
}

// 在 Vue Router 中添加新路由
router.addRoute(newRoute)

6.路由导航守卫

在 Vue Router 中,一共有三种类型的导航守卫:
1.全局前置守卫(beforeEach):在路由切换之前调用,可以用来进行全局权限验证等操作。
2.全局解析守卫(beforeResolve):在路由被解析之后,组件被激活之前调用,可以用来做一些全局的前置操作。
3.全局后置守卫(afterEach):在路由切换完成之后调用,可以用来执行一些后续操作,如页面统计等。

router.beforeEach((to, from, next) => {
  // 在这里进行权限验证等操作
  if (判断) {
    next('/login')
  } else {
    next()
  }
})

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

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

相关文章

Wireshark——获取指定协议的数据包

1、问题 使用Wireshark捕获了大量的数据包&#xff0c;但是只想要指定协议的数据包。 2、方法 例如&#xff0c;只想要Modbus/TCP协议的数据包。 在应用显示过滤器中输入协议的名称&#xff08;小写&#xff09;&#xff0c;回车。 选择文件&#xff0c;导出特定分组。 将所…

Matlab 机器人工具箱 RobotArm类

文章目录 1 RobotArm1.1 方法1.2 注意2 RobotArm.RobotArm3 RobotArm.cmove4 其他官网:Robotics Toolbox - Peter Corke 1 RobotArm 串联机械臂类 1.1 方法 方法描述plot显示机器人的图形表示teach驱动物理和图形机器人mirror使用机器人作为从机来驱动图形</

影响哈默纳科Harmonic减速机使用寿命的5大因素

哈默纳科HarmonicDrive减速机以其轻量、小型、传动效率高、减速范围广、精度高等特点&#xff0c;被广泛应用于各种传动系统中。然而&#xff0c;尽管哈默纳科Harmonic减速机具有诸多优势&#xff0c;但其使用寿命仍可能受到多种因素的影响。 首先&#xff0c;环境因素对哈默纳…

【ESP32 IDF快速入门】点亮第一个LED灯与流水灯

文章目录 前言一、有哪些工作模式&#xff1f;1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 二、GPIO操作函数2.1 GPIO 汇总2.2 GPIO操作函数gpio_config配置引脚reset 引脚函数设置引脚电平选中对应引脚设置引脚的方向 2.3 点亮第一个灯 三、流水灯总结 前言 ESP32…

基于深度学习的苹果叶片病害检测系统(含UI界面、yolov8、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8 yolov8主要包含以下几种创新&#xff1a;         1. 可以任意更换主干结构&#xff0c;支持几百种网络主干。 数据集&#xff1a;     网上下载的数据集&#x…

UE4 Niagara 关卡1.4官方案例解析

sprites can face the camera&#xff0c;or they can face any arbitrary vector&#xff0c;in this case the vector between the center of the system and the particle itself&#xff08;粒子可以面对摄影机&#xff0c;也可以面对任意向量&#xff0c;在这个实例中的向…

为国产信创服务器提供LDAP统一身份认证方案

金融信创作为 8 大行业信创之首&#xff0c;早已成为其他行业信创建设的参考。金融行业有着极为复杂的业务场景&#xff0c;对系统有着极高的稳定可靠需求&#xff0c;因此&#xff0c;在寻找微软 AD 国产化替代方案时&#xff0c;常会涉及到更深层次的场景。例如&#xff0c;最…

免费体验重保利器!AI加持智胜攻防,企业安全巡查活动等你加入

两会时刻&#xff0c;重保启动 今年&#xff0c;亚信安全护航重保 又有新“利器”加持 新增AI智能降噪算法的 “外部攻击面管理”服务 升级加入攻防“编制” 国内TOP级攻防专家团队&#xff0c;亚信安全北极狐高级攻防实验室赋能支撑&#xff0c;正式推出“攻防利器系列行动…

【b站咸虾米】1 Vue介绍 2021最新Vue从基础到实例高级_vue2_vuecli脚手架博客案例

课程地址&#xff1a;【2021最新Vue从基础到实例高级_vue2_vuecli脚手架博客案例】 https://www.bilibili.com/video/BV1pz4y1S7bC/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 感觉尚硅谷的Vue看完忘得差不多了&#xff0c;且之前学过咸虾米的unia…

Python与FPGA——sobel边缘检测

文章目录 前言一、sobel边缘检测二、Python sobel边缘检测三、FPGA sobel边缘检测总结 前言 边缘存在于目标、背景区域之间&#xff0c;它是图像分割所依赖的较重要的依据&#xff0c;也是图像匹配的重要特征。边缘检测在图像处理和计算机视觉中&#xff0c;尤其在图像的特征提…

Day37 socket、TCP、UDP

socket类型 流式套接字(SOCK_STREAM) TCP 提供了一个面向连接、可靠的数据传输服务&#xff0c;数据无差错、无重复的发送且按发送顺序接收。内设置流量控制&#xff0c;避免数据流淹没慢的接收方。数据被看作是字节流&#xff0c;无长度限制。 数据报套接字(SOCK_DGRAM) UD…

InnoDB存储引擎对MVCC的实现

MVCC MVCC的目的 在搞清楚MVCC之前,我们要搞懂一个问题,MVCC到底解决的是什么问题? 我用一句话概括,那就是为了解决读-写可以一起的问题! 在我们的印象里,InnoDB可以读读并发,不能读写并发,或者写写并发 这是很正常的想法,因为如果读写并发的化,会有并发问题 而对于写写…

设计模式:什么是设计模式?①

一、什么是设计模式&#xff1f; 1. 是一类程序设计思想 2. 是在大量实践过程中摸索总结出的标准经验提炼 3. 具有多样性和丰富性&#xff0c;不同情况应用的思想不同 二、设计模式的好处 1. 代码生产力和效率的提升 2. 让代码表现更为规整&#xff0c;简洁。阅读维护管理的成本…

InfluxDB SHOW SERIES语句按照什么顺序返回?

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言样例SHOW SERIES比较原理结论结束语 引言 influxdb的计算引擎为了做到自底而上的…

曲线曲面 - 连续性, 坐标变换矩阵

连续性 有两种&#xff1a;参数连续性&#xff08;Parametric Continuity&#xff09;、几何连续性&#xff08;Geometric Continuity&#xff09;参数连续性&#xff1a; 零阶参数连续性&#xff0c;记为&#xff0c;指相邻两段曲线在结合点处具有相同的坐标 一阶参数连续性&…

前缀和+哈希表:联手合击Leetcode 560.和为k的子数组

题目 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums [1,2…

GPT-4技术解析:与Claude3、Gemini、Sora的技术差异与优势对比

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

【笔记】OpenHarmony和HarmonyOS区别及应用开发简介

一、概念 OpenHarmony(OH) &#xff1a; OpenAtom OpenHarmonyHarmonyOS(HO)&#xff1a;开发 | 华为开发者联盟 (huawei.com) HO当前最高是3.1&#xff0c;在华为mate 60上面也是。关于4.0、5.0和next这类版本说法都是面向用户的&#xff0c;不是开发人员。对于程序员&#…

算法相关计算

1 内存管理相关 1 .1 float 6.9 f 的内存计算方法 二进制小数的计算&#xff1a; &#xff08;1&#xff09;小数的二进制算法和整数的大致相反&#xff0c;就是不断的拿小数部分乘以2取积的整数部分&#xff0c;然后正序排列。比如求0.9的二进制&#xff1a; 0.9*21.8 取 1…

opencv边缘检测之Canny算法

文章目录 简介实战 简介 Canny在1986年提出了一种边缘检测算法&#xff0c;因其卓越的性能和准确性而广泛应用于各种图像分析领域。opencv中提供了这种算法&#xff0c;其操作步骤如下 高斯滤波&#xff1a;采用 5 5 5\times5 55的高斯核函数进行滤波&#xff0c;对图像进行…