【Vue】路由

       📝个人主页:五敷有你      

 🔥系列专栏:Vue

⛺️稳中求进,晒太阳

目录

路由

单页应用程序

        总结:

VueRouter

核心步骤:

组件存放目录的问题

路由的封装

声明式导航

声明式导航 - 导航链接

声明式导航 - 两个类名

声明式导航-跳转传参

查询参数传参

动态路由传参

Vue路由的-重定向

Vue路由-404

Vue路由-模式设置

编程式导航 - 基本跳转


路由

单页应用程序

单页面应用:(SPA):所有功能在 一个html页面上 实现

开发分类

实现方式

页面性能

开发效率

用户体验

学习成本

首屏加载

SEO

单页

一个html

按需更新

性能高

非常好

多页

多个html页面

整页更新

性能低

中等

一般

中等

  • 单页面应用: 系统网站,内部网站,文档网站,移动端站点
    • 具体实例:网易云
  • 多页面应用: 公司官网,电商类网站
总结:
  • 单页面应用程序之所以开发效率高,性能高,用户体验好 最大原因就是:页面按需更新
  • 按需更新,首先需要明确: 访问路径和组件的对应关系---路由

生活中的路由:设备和ip的映射关系

Vue中的路由: 路径和组件的映射关系

VueRouter

作用:修改地址栏路径时,切换显示匹配的组件

说明:Vue官方的一个路由插件,是一个第三方包

使用步骤:(写在main.js)

        1. 下载:下载VueRouter 模板到当前工程 版本3.6.5

yarn add vue-router@3.6.5
npm i vue-router@3.6.5

        2. 引入

import VueRouter from 'vue-router'

         3 .安装注册

Vue.use(VueRouter)

        4. 创建路由对象

const router=new VueRouter()

        5.注入,将路由对象注入到newVue实例中,建立关联

new Vue({render:h=>h(App),router:router
}).$mount('#app')

核心步骤:

        1.创建需要的组件(views目录),配置路由规则

import Find from './views/Find.vue'
import Find from './views/Find.vue'
import Find from './views/Find.vue'const router=new VueRouter({routes:[{path:"/find",component:Find},    {path:"/find",component:Find},    {path:"/find",component:Find},    ]
})

        2.配置导航,配置路由出口(路径匹配的组件的位置)

                <router-view></router-view>确定显示的位置

<div class="footer_warp"><a href="#/find">发现音乐</a><a href="#/my">我的音乐</a><a href="#/friend">朋友</a>
</div>
<div><router-view></router-view>
</div>

组件存放目录的问题

注意:.vue文件 本质无区别

路由相关的组件,为什么放在views目录呢?

组件分类

  • 页面组件 - 页面展示 - 配合路由用 -view层
  • 复用组件 - 展示数据 - 常用于复用 -components层

路由的封装

问题:所有的路由都堆在main.js中合适么?

目标:将所有的模块抽离出来

好处:拆分模块

封装到router/index.js下

import myMusic from '@/components/myMusic.vue'
import myFriends from '@/components/myFriends.vue'
import findMusic from '@/components/findMusic.vue'
import Vue from 'vue'
import VueRouter from 'vue-router'
<!--VueRouter组件的初始化-->
Vue.use(VueRouter)
<!--创建一个路由对象-->
const router=new VueRouter({routes:[//router 路由规则//route 一条路由规则{path:"路径",component:组件名}{path:"/my",component:myMusic},{path:"/find",component:findMusic},{path:"/friend",component:myFriends},]
})<--导出路由-->
export default router;

之后再在main.js中导入

import router from './router/index'

声明式导航

声明式导航 - 导航链接

vue-router提供了一个全局组件router-link(取代a标签)

  1. 能跳转:配置to属性指定路径(必须),本质还是a标签,to无需#
   <router-link to="find">发现音乐</router-link><router-link to="friend">我的朋友</router-link><router-link to="my">我的音乐</router-link>
  1. 能高亮:默认就会提高高亮类名,可以直接设置高亮样式
    1. 有.router-link-active
    2. 有。router-link-exact-active
   <router-link to="find" class="router-link-exact-active  router-link-active">发现音乐</router-link><router-link to="friend">我的朋友</router-link><router-link to="my">我的音乐</router-link>

声明式导航 - 两个类名

router-link自动给当前导航添加了两个高亮类名

1.router-link-active 模糊匹配(用的多)

                to="/my" 可以匹配 /my /my/a /my

2.router-link-exact-active 精确匹配

                to="/my" 仅可以匹配 /my

 

声明式导航-跳转传参

目标:在跳转的路由的时候传参

  1. 查询参数传参
    1. 语法格式如下
      1. to="/to"?参数名=值"
 <div class="nav"><router-link to="find?key=发现音乐">发现音乐</router-link><router-link to="friend?key=我的朋友">我的朋友</router-link><router-link to="my?key=我的音乐">我的音乐</router-link></div>

  1. 对应页面组件接受传递过来的值
    1. $route.query.参数名.
<template><div class="main"><h1>{{ $route.query.key }}</h1><p>朋友的音乐</p><p>朋友的音乐</p><p>朋友的音乐</p><p>朋友的音乐</p></div>
</template>
动态路由传参
  1. 配置动态路由
    1. {path:"/my/:word",component:myMusic},
const router=new VueRouter({routes:[{path:"/my/:word",component:myMusic},{path:"/find/:word",component:findMusic},{path:"/friend/:word",component:myFriends},]
})

       2. 配置导航链接

            to="path/参数值"

<router-link to="/my/我的音乐">我的音乐</router-link>

         3.对应页面组件接受传递过来的值

                $route.params.参数名

  <h1>{{ $route.params.word }}</h1>

Vue路由的-重定向

问题:网页打开,url默认时是/路径,未匹配到组件时,会出现空白

说明:重定向 →匹配path后,强制跳转path路径

语法:{path:匹配路径,redirect:重定向的路径},

const router=new VueRouter({routes:[{path:"/",redirect:"/find/爱你"},{path:"/my/:words",component:myMusic},{path:"/find/:words",component:findMusic},{path:"/friend/:words",component:myFriends},]
})

Vue路由-404

作用:当路径找不到匹配时,给个提示页面

位置:配置路由的最后

语法:path:"*"(任意路径)-前面不匹配就命中最后一个

const router=new VueRouter({routes:[{path:"/",redirect:"/find/爱你"},{path:"/my/:words",component:myMusic},{path:"/find/:words",component:findMusic},{path:"/friend/:words",component:myFriends},{path:"*",component:NotFind},]
})

Vue路由-模式设置

问题:路由的路径带有#,能否真正切成路径形式

hash路由(默认) 例如: http://localhost:8080/#/home

history路由(常用) 例如: http://localhost:8080/home

 在index.js中

const router=new VueRouter({mode:"history",routes:[{path:"/",redirect:"/find/爱你"},{path:"/my/:words",component:myMusic},{path:"/find/:words",component:findMusic},{path:"/friend/:words",component:myFriends},{path:"*",component:NotFind},]
})

编程式导航 - 基本跳转

问题:点击按钮怎么跳转

编程式导航,用js代码跳转

两种语法:

  1. path 路径跳转
简单写法:
this.$router.push("/路由路径")
复杂写法:
this.$router.push({path:'/路由路径',
})

query传参

简写:
this.$router.push('/路径?参数1=值,参数2=值,参数3=值')完整写法:
this.$router.push({path:"/路径",query:{参数名1:"值",参数名2:"值"}
})
对应取值<h1>{{ $route.query.key }}</h1>

动态传参

简写:
this.$router.push("/路径/${this.inpValue}")
完整写法:
this.$router.push({path:"路径/关键词"
})//取值
this.$route.param.words

name 命名路由跳转(适合path路径长的场景)

{name:'路由名',path:'/path/xxx',component:xxx}
//query传参
this.$router.push({name:"路由名",query:{}
})
//动态路由传参
this.$router.push({name:"路由名",param:{}
})

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

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

相关文章

Go语言必知必会100问题-11 使用选项模式

使用选项模式 在设计API时&#xff0c;可能会遇到一个问题&#xff1a;如何处理可选配置&#xff1f;有效的解决可选配置问题可以提高API的灵活性。本文通过一个具体示例说明处理可选配置的一些方法。该示例的要求是设计一个对外提供创建HTTP服务器的库函数。函数定义如下&…

记一次服务间调用失败的bug

1. 服务环境描述 1.所有服务都注册到Consul上&#xff0c;服务间调用采用的是服务名&#xff1b; 2.所有服务用docker容器化部署&#xff0c;用docker swarm管理服务集群&#xff1b; 3.docker compose编排文件里的所有服务的端口均未映射出来&#xff0c;即没有加 ports: -…

服了,阿里云服务器和腾讯云服务器价格差不多怎么选择?

2024年阿里云服务器和腾讯云服务器价格战已经打响&#xff0c;阿里云服务器优惠61元一年起&#xff0c;腾讯云服务器62元一年&#xff0c;2核2G3M、2核4G、4核8G、8核16G、16核32G、16核64G等配置价格对比&#xff0c;阿腾云atengyun.com整理阿里云和腾讯云服务器详细配置价格表…

高级语言期末2011级B卷(计算机学院)

1.编写函数&#xff0c;实现按照如下公式计算的功能&#xff0c;其中n为自然数 #include <stdio.h>int fac(int n) {if(n0)return 1;elsereturn n*fac(n-1); }float fun(int n) {float flag;float sum0;for(int i0; i<n; i) {flagi/((i1)*fac(i2));sumflag;}return su…

重推请求之curl和fiddler

在实际的项目中会有出现问题&#xff0c;想重现的场景&#xff0c;比较重新调用一个服务&#xff0c;那么如何进行快速的重推请求呢&#xff0c;记录下来&#xff0c;方便备查。 主要有curl和fiddler两种方式&#xff0c;下面详细说。 方式一、curl 命令 curl 是一个利用URL规…

黑猫详解【UFS M-PHY】第1篇:MIPI M-PHY基础知识

本文依据Unipro1.8/M-PHY4.1/UFSHCI3.0协议及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,已加入原创维权,禁止私自转载。 文章所在专栏:《黑猫带你学:UFS协议栈详解》——UFS Unipro/M-PHY/HCI协议栈 兄弟专栏:《黑猫带你学:UFS协议详解》——…

云上攻防-云服务篇弹性计算服务器云数据库实例元数据控制角色AK控制台接管

知识点: 1、云服务-弹性计算服务器-元数据&SSRF&AK 2、云服务-云数据库-外部连接&权限提升 章节点&#xff1a; 云场景攻防&#xff1a;公有云&#xff0c;私有云&#xff0c;混合云&#xff0c;虚拟化集群&#xff0c;云桌面等 云厂商攻防&#xff1a;阿里云&am…

租赁小程序|租赁系统|租赁软件开发带来高效运营

随着社会的不断发展和科技的不断进步&#xff0c;越来越多的企业开始关注设备租赁业务。设备租赁作为一种短期使用设备的方式&#xff0c;为企业提供了灵活和成本节约的优势。针对设备租赁业务的管理和提升企业竞争力的需求&#xff0c;很多企业选择定制开发设备租赁系统。本文…

【大数据】-- maxcompute/odps 存储优化之小文件合并

1、背景 在 flink 写入 odps 表时,发现抛出了异常。经过查询知道原因是该 odps table 表的小文件过多,超过了最大数量,导致写入失败。 2、小文件的定义 分布式文件系统按块(Block)存放数据,文件大小比块大小(64MB)小的文件称为小文件。分布式系统不可避免会产生小文件…

js 面试 1判断变量是否是数组 2 检测数据类型方法

1 是否是数组 1) typeof 检测数据类型运算符 优点&#xff1a;使用简单 缺点&#xff1a;只能检测基本类型&#xff08;除null外&#xff09; console.log(typeof(10)) //Number console.log(typeof(false)) //boolean console.log(typeof(hello)) //string console.log(typeof…

【Python】requests库的介绍及用法

目录 1、应用场景 2、requests-三方库 1、应用场景 Python中的requests库被广泛应用在需要发送HTTP请求的场景中。以下列举了一些主要的应用场景&#xff1a; API调用&#xff1a; 许多服务提供了API接口&#xff0c;我们可以使用requests库发送GET、POST、PUT、DELETE等请…

vue使用gitshot生成gif

vue使用gitshot生成gif 问题背景 本文将介绍vue中使用gitshot生成gif。 问题分析 解决思路&#xff1a; 使用input组件上传一个视频&#xff0c;获取视频文件后用一个video组件进行播放&#xff0c;播放过程进行截图生成图片数组。 demo演示上传一个视频&#xff0c;然后生…

如何使用Docker部署IT-Tools并结合内网穿透实现公网访问本地工具箱服务

作为程序员&#xff0c;在日常工作中&#xff0c;需要借助一些工具来提高我们工作效率&#xff0c;IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能&#xff0c;使开发者能以更高效方式完成任务。经由IT-Tools&#xff0c;开发人员能轻松应对各类技术挑战&…

C++之数组

1&#xff0c;概述 所谓数组&#xff0c;就是一个集合&#xff0c;里面存放了相同类型的数据元素 特点1&#xff1a;数组中没干过数据元素都是相同的数据类型 特点2&#xff1a;数组都是连续存放位置组成的 2&#xff0c;一维数组 2.1 一维数组的定义 一维数组定义有三种…

Leetcode583. 两个字符串的删除操作 -代码随想录

题目&#xff1a; 代码(首刷自解 2024年2月29日&#xff09;&#xff1a; class Solution { public:// 动态规划 好像和找最长公共子序列一样&#xff1f;int minDistance(string word1, string word2) {int sz1 word1.size();int sz2 word2.size();// dp initvector<vec…

SD-WAN技术:优化国内外服务器访问的关键

在全球化的商业环境中&#xff0c;企业经常需要在国内访问国外的服务器。然而&#xff0c;由于地理位置和网络架构的限制&#xff0c;这种跨国访问往往会遇到速度慢、延迟高等问题。SD-WAN&#xff08;软件定义广域网&#xff09;技术的兴起&#xff0c;为企业提供了一种新的解…

八股文打卡day24——数据库(1)

面试题&#xff1a;左连接和右连接的区别&#xff1f; 我的回答&#xff1a; 左连接的SQL语句是&#xff1a;左表 left join 右表 on 连接条件&#xff0c;表示以左表为基础&#xff0c;将左表的的所有记录与右表进行连接。即使右表中没有与左表匹配的记录&#xff0c;左连接…

大白话解析LevelDB:TableCache

文章目录 TableCache 的构造函数TableCache::Get在 Cache 中查找指定的 SST从 SST 中查找指定的 Key TableCache::NewIteratorTableCache::Evict TableCache在LevelDB中的作用是管理和缓存SST(Sorted String Tables)的读取。 为了提高读取效率&#xff0c;TableCache会缓存已打…

Linux-Uboot命令

help命令 进入 uboot 的命令行模式后输入“help”或者“&#xff1f;”&#xff0c;然后按下回车即可查看当前 uboot 所支持的命令。 查看某一个命令的帮助信息&#xff1a;&#xff1f;命令名称 或 help命令名称 信息查询命令 常用的和信息查询有关的命令有 3 个…

力扣Hot100

力扣100题easy 1. 两数之和 时间空间复杂度为O(N)&#xff0c;思路是&#xff1a;创建一个哈希表&#xff0c;对于每一个 x&#xff0c;先查询哈希表中是否存在 target - x&#xff0c;然后将 x 插入到哈希表中&#xff0c;即可保证不会让 x 和自己匹配。 class Solution {p…