Vue3 --- 路由

news2024/12/24 3:13:28
  1. 路由就是一组key-value的对应关系;
  2. 多个路由,需要经过路由器的管理。

1. 基本切换效果

安装路由器

npm i vue-router

@/router/index.ts

// 
import { createRouter, createWebHistory } from 'vue-router'
import Home from '@/components/Home.vue'
import News from '@/components/News.vue'
import About from '@/components/About.vue'


// 创建路由器
const router = createRouter({
    // 路由器的工作模式
    history: createWebHistory(),
    routes: [
        {
            path: '/home',
            component:Home
        },{
            path: '/news',
            component:News
        },{
            path: '/about',
            component:About
        },
    ]
})

// 暴漏出去router
export default router

main.ts

app.use(router)

2. 两个注意点

  1. 路由组件通常存放在pages或views文件夹,一般组件通常存放在components文件夹。
  2. 通过点击导航,视觉效果上“消失”了的路由组件,默认是被销毁掉的,需要的时候再去挂载。

一般组件:自己亲手写出来的 < Demo />
路由组件:靠路由的规则渲染出来的
在这里插入图片描述

3. 路由器工作模式

  1. history
    在这里插入图片描述
  • 优点:URL更加美观,不带有#,更接近传统的网站URL。

  • 缺点:后期项目上线,需要服务端配合处理路径问题,否则刷新会有404错误。

const router = createRouter({
history:createWebHistory(),//history模式
/******/
} )
  1. hash
    在这里插入图片描述
  • 优点:兼容性更好,因为不需要服务器端处理路径。
  • 缺点:URL带有#不太美观,且在SEO优化方面相对较差
const router = createRouter({
history:createWebHashHistory(), //hash模式
/******/
})

4. to的两种写法

  1. 字符串写法
 <RouterLink to="/news" active-class="active">新闻</RouterLink>
  1. 对象写法
<RouterLink :to="{path:'/about'}" active-class="active">关于</RouterLink>

也可以给路由添加名字,通过名字找到它

<RouterLink :to="{name:'shouye'}" active-class="active">关于</RouterLink>

5. 嵌套路由

routes: [
        {
            path: '/home',
            component:Home
        },{
            path: '/news',
            component: News,
            // 嵌套路由
            children: [
                {
                    path: 'detail', // 子级不需要'/'
                    component:New1
                }
            ]
        },{
            path: '/about',
            component:About
        },
    ]

6. 路由参数

  1. query
    第一种写法:使用模板字符串
<RouterLink :to="`/news/detail?id=${item.id}&message=${item.message}`">{{ item.title }}</RouterLink>

第二种写法:

<RouterLink :to="{
                        path: '/news/detail',
                        // name:'xiangqing'
                        query: {
                            id: item.id,
                            message: item.message
                        }
                    }">
                        {{ item.title }}</RouterLink>
  1. params
    子组件路由:需要使用/:xx进行占位
children: [
                {
                    name:'xiangqing',
                    path: 'detail/:id/:message/:content?',// content可传可不传
                    component:Detail
                }
            ]

第一种写法:

<RouterLink :to="`/news/detail/${item.id}/${item.message}`">{{ item.title }}</RouterLink>

第二种写法:

 <RouterLink :to="{
                        name: 'xiangqing',
                        params: {
                            id: item.id,
                            message: item.message
                        }
                    }">
                        {{ item.title }}</RouterLink>

注意:

  1. 参数不能是对象和数组;
  2. 使用params参数,path需要占位;并且在使用对象写法时不能使用path,只能使用name

7. 路由的props配置

在路由规则中设置props
作用:让路由组件更方便的收到参数(可以将路由参数作为props传给组件)

{
            path: '/news',
            component: News,
            // 嵌套路由
            children: [
                {
                    name:'xiangqing',
                    path: 'detail/:id/:message',
                    component:Detail,
                    props:xxxx
                }
            ]
        }

props的三种写法:

  1. 将路由收到的所有params参数作为props传给路由组件
props:true
  1. 函数写法,自己决定将什么作为props传给路由组件
props(route){
	return route.query //如果使用params参数那一般使用第一种形式设置props配置
}
  1. 对象写法,自己决定将什么作为props传给路由组件
props{
	a:100,
	b:200

8. 路由的repalce配置

浏览器的路由模式有push和replace两种,默认为push模式(可前进可后退);replace模式不能前进或后退。

<RouterLink replace :to="`/news/detail/${item.id}/${item.message}`">{{ item.title }}</RouterLink>

9. 编程式导航

编程式导航 ---- 脱离< RouterLink >实现路由跳转

import { onMounted } from 'vue'
import { useRouter } from 'vue-router'

const router = useRouter()

onMounted(()=> {
    setTimeout(() => {
        router.push('/news')
    },3000)
})

使用场景:

  1. 登录成功自动跳转;
  2. 鼠标划过跳转页面

10. 重定向

在路由规则处设置:

{
            path: '/',
            redirect:'/home'
        }

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

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

相关文章

[Armbian] 部署Docker版Home Assistent,安装HACS并连接米家设备

title: [Armbian] 部署Docker版Home Assistent&#xff0c;安装HACS并连接米家设备 date: 2024-07-21T10:51:23Z lastmod: 2024-07-21T11:40:39Z [Armbian] 部署Docker版Home Assistent&#xff0c;安装HACS并连接米家设备 官网&#xff1a;Home Assistant (home-assistant.i…

算法——滑动窗口(day6)

1004.最大连续1的个数 ||| 1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 这道题如果能转化为滑动窗口的话就会很简单&#xff0c;因为我们如果尝试去把0翻转为1再计数的话等到第2轮又得重新翻转回来&#xff0c;费时费力~ 那么我…

gihub导入gitee仓库实现仓库同步

昨天在GitHub里导入了gitee仓库&#xff0c;但是在仓库同步这里卡了很久&#xff0c;因为网上大多数都是从github导入gitee&#xff0c;然后github生成token放入实现同步&#xff0c;但是我找到一种更为方便的&#xff01; 1.首先找到项目文件下的.git文件里的config文件 2.在…

linux 下将文件安装的mysql.server服务添加到systemctl中管理

1、找到mysql 的 mysql.server/ 文件位置 find / -name mysql.server 2、编辑mysql.server脚本&#xff0c;并将mysql.server脚本添加到linux服务 3、将mysql.server 复制到etc/init.d/mysqld 目录 cp /app/db/mysql/support-files/mysql.server /etc/init.d/mysqld 4、授权…

08 B端产品业务调研的流程(1)

业务调研是掌握业务情况的有效方法。一般核心流程如下图&#xff1a; 明确调研目标&#xff1a;即调研的目标&#xff0c;解决为什么要做业务调研&#xff0c;期望解决什么问题&#xff0c;达到什么样效果&#xff0c;定向。 选取调研对象&#xff1a;涉及多角色&#xff0c;一…

【吊打面试官系列-ZooKeeper面试题】zookeeper 负载均衡和 nginx 负载均衡区别?

大家好&#xff0c;我是锋哥。今天分享关于 【zookeeper 负载均衡和 nginx 负载均衡区别? 】面试题&#xff0c;希望对大家有帮助&#xff1b; zookeeper 负载均衡和 nginx 负载均衡区别? zk 的负载均衡是可以调控&#xff0c;nginx 只是能调权重&#xff0c;其他需要可控的都…

heic文件怎么转换成jpg?上百份文件转换3秒就能搞定(办公必备)

heic和jpg是两种不同的图片格式&#xff0c;平时整理图片素材时&#xff0c;如果需要将heic转为jpg格式&#xff0c;那么可以使用相关的heic图片转换工具。 ​ 为什么要将heic文件转换成jpg&#xff1f;虽然HEIC格式具有很多优点&#xff0c;但是目前并不是所有设备和应用程序…

IAR环境下STM32+IAP方案的实现

--基于STM32F103ZET6的UART通讯实现 一、什么是IAP&#xff0c;为什么要IAP IAP即为In Application Programming(在应用中编程)&#xff0c;一般情况下&#xff0c;以STM32F10x系列芯片为主控制器的设备在出厂时就已经使用J-Link仿真器将应用代码烧录了&#xff0c;如果在设备使…

【Qt】按钮的属性相关API

目录 一. QPushButton 二. QRadioButton 按钮组 三. QCheckBox Qt中按钮的继承体系如下图 QAbstractButton是一个抽象类&#xff0c;集成了按钮的核心属性和API 按钮说明QPushButton&#xff08;普通按钮&#xff09;最常见的按钮&#xff0c;用于触发操作或者事件。可以设…

【Git命令】git rebase之合并提交记录

使用场景 在本地提交了两个commit&#xff0c;但是发现根本没有没必要分为两次&#xff0c;需要想办法把两次提交合并成一个提交&#xff1b;这个时候可以使用如下命令启动交互式变基会话&#xff1a; git rebase -i HEAD~N这里 N 是你想要重新调整的最近的提交数。 如下在本地…

27.js实现鼠标拖拽

e.offsetX是鼠标距离准确事件源的左上角距离 e.clientX是鼠标距离浏览器可视窗口左上角的距离 e.pageX是鼠标距离文档左上角的距离 /* 当鼠标点击div时开始挪动&#xff0c;当鼠标抬起&#xff0c;div静止——事件源是div 当鼠标点击后,鼠标在移动——事件源…

视频汇聚,GB28181,rtsp,rtmp,sip,webrtc,视频点播等多元异构视频融合,视频通话,视频会议交互方案

现在视频汇聚&#xff0c;视频融合和视频互动&#xff0c;是视频技术的应用方向&#xff0c;目前客户一般有很多视频的业务系统&#xff0c;如已有GB28181的监控&#xff08;GB现在是国内主流&#xff0c;大量开源接入和商用方案&#xff09;&#xff0c;rtsp设备&#xff0c;音…

Spring Boot 笔记1(启动类与控制器)

采用Spring Tool Suit 4 java jdk 17 学习启动类与控制器 创建Spring Starter Project 如果https://start.spring.io链接无效&#xff0c;可以选择https://start.aliyun.com 项目结构 启动类 启动类是程序的执行入口 例子1 Demo1Application.java package com.example.dem…

从0开始的STM32HAL库学习6

外部时钟源选择 配置环境 选择TIM2 配置红色框图中的各种配置 时钟源选择外部时钟 2 1. 预分频器 Prescaler &#xff0c;下面填0&#xff0c;不分频 2. 计数模式 CounterModer &#xff0c;计数模式选择为向上计数 3. 自动重装寄存器 CouterPeriod &#xff0c;自动重…

记录些MySQL题集(17)

一、MySQL索引为何使用B树结构&#xff1f; MySQL的索引机制中&#xff0c;默认使用BTree作为底层的数据结构&#xff0c;但为什么要选择B树呢&#xff1f;有人会说树结构是以二分法查找数据&#xff0c;所以会在很大程度上提升检索性能&#xff0c;这点确实没错&#xff0c;但…

企业邮件系统管理(一)掌握企业邮件系统管理:从Exchange Server 2010的安装到高可用性配置

&#x1f44d; 个人网站&#xff1a;【洛秋资源小站】 掌握企业邮件系统管理&#xff1a;从Exchange Server 2010的安装到高可用性配置 在当今的企业环境中&#xff0c;电子邮件系统是不可或缺的通信工具。为了确保企业邮件系统的稳定运行和高效管理&#xff0c;系统管理员需要…

WEB前端08-综合案例(动态表格)

使用 HTML、CSS 和 JavaScript 创建动态表格 在本教程中&#xff0c;我们将创建一个动态表格&#xff0c;允许用户添加行、选择项目&#xff0c;并执行批量操作&#xff0c;如全选或删除选中的行。我们将通过 HTML、CSS 和 JavaScript 来实现这一功能。让我们逐步了解每个部分…

分类预测 | Matlab实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断

分类预测 | Matlab实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断 目录 分类预测 | Matlab实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断分类效果基本介绍程序设计参考资料 分类效果 基本介绍 Matlab实现BES-LSSVM秃鹰算法优化最…

Windows原生环境配置Tensorflow使用GPU

1 缘起 最近在折腾Transformer,选择Tensorflow作为基础框架, 距离上次应用Tensorflow跑项目已经有2年之多,同时,也换了电脑, 基础环境也没有了,开始重新搭建开发环境, 此时,Tensorflow 2.x版本已经来到了2.17.0, 上上本书里使用的还是初代Tensorflow2.0.0,发展太快了…

【python】OpenCV—Extreme Points in the Contour

文章目录 1、需求描述2、功能实现3、更多的例子4、完整代码5、参考 1、需求描述 给一张图片&#xff0c;找出其轮廓&#xff0c;并画出轮廓的上下左右极值点 输入图片 输出效果 2、功能实现 # 导入必要的包 import imutils import cv2 # 加载图像&#xff0c;将其转换为灰度…