【Vue】声明式导航-导航链接

一、引入

但凡说到声明式导航,都需要想到router-link

需求 实现导航高亮效果

68249204474

如果使用a标签进行跳转的话,需要给当前跳转的导航加样式,同时要移除上一个a标签的样式,太麻烦!!!


二、解决方案

vue-router 提供了一个全局组件 router-link (取代 a 标签)(即导航式链接)

  • 能跳转,配置 to 属性指定路径(必须) 。本质还是 a 标签 ,to 无需 #
  • 能高亮,默认就会提供高亮类名,可以直接设置高亮样式

语法: <router-link to="path的值"> 发现音乐 </router-link>

  <div>
    <div class="footer_wrap">
      <router-link to="/find">发现音乐</router-link>
      <router-link to="/my">我的音乐</router-link>
      <router-link to="/friend">朋友</router-link>
    </div>
    <div class="top">
      <!-- 路由出口 → 匹配的组件所展示的位置 -->
      <router-view></router-view>
    </div>
  </div>

通过router-link自带的两个样式进行高亮

使用router-link跳转后,我们发现。当前点击的链接默认加了两个class的值 router-link-exact-activerouter-link-active

我们可以给任意一个class属性添加高亮样式即可实现功能


三、代码示例

<template>
  <div>
    <div class="footer_wrap">
      <router-link to="/find">发现音乐</router-link>
      <router-link to="/my">我的音乐</router-link>
      <router-link to="/friend">朋友</router-link>
    </div>
    <div class="top">
      <!-- 路由出口 → 匹配的组件所展示的位置 -->
      <router-view></router-view>
    </div>
  </div>
</template>

<style>
.footer_wrap a.router-link-active {
  background-color: purple;
}
</style>

四、声明式导航-两个类名

当我们使用 <router-link></router-link> 跳转时,自动给当前导航加了两个类名

单词长是为了防止和我们平时定义的类名重名

68249312105


1)router-link-active

模糊匹配(用的多)

to=“/my” 可以匹配 /my /my/a /my/b …

只要是以/my开头的路径 都可以和 to="/my"匹配到

eg:不仅要匹配/discover还要匹配/discover/toplist

image-20240202223312822

2)router-link-exact-active

精确匹配(exact)

to=“/my” 仅可以匹配 /my

代码示例

/* 
  router-link-active 模糊匹配(更多)
  to="/find"  =>  地址栏 /find   /find/one   /find/two  ...

  router-link-exact-active 精确匹配
  to="/find"  =>  地址栏 /find  
*/
.footer_wrap a.router-link-active {
  background-color: purple;
}
### 回答1: Vue提供了两种方式来实现页面导航声明式导航和编程式导航。 1. 声明式导航 声明式导航是通过在模板中使用Vue Router提供的组件来实现的。例如,可以使用<router-link>标签来创建一个链接,当用户点击链接时,Vue Router会自动地导航到指定的页面。可以像下面这样使用<router-link>: ``` <router-link to="/home">Home</router-link> ``` to属性指定了要导航到的页面路径。 2. 编程式导航 编程式导航是通过JavaScript代码来实现的。Vue Router提供了$router对象来控制导航。可以使用$router.push()方法来导航到指定的页面。例如,可以像下面这样使用$router.push(): ``` this.$router.push('/home') ``` 这将导航到名为“home”的路由。 总的来说,声明式导航更加适合简单的导航,而编程式导航更适合复杂的导航和在JavaScript代码中动态导航。 ### 回答2: Vue声明式导航和编程的主要区别在于指导方式和实现方式。 Vue声明式导航是指通过使用Vue Router插件提供的router-link标签或者编程式导航方法,以声明的方式实现页面之间的导航跳转。在模板中使用router-link标签可以根据目标路由名称或路径自动生成对应的超链接,而不需要手动编写a标签或者使用window.location等方式进行跳转。使用router-link可以使页面路由的变化更加方便和直观,同时也提供了一些额外的特性,如可以设置活动状态、添加CSS类等。 而Vue编程式导航则是通过直接调用Vue Router插件提供的方法进行页面导航,一般使用$router对象的push、replace、go等方法。通过编程式导航可以实现更加灵活和条件性的页面跳转,可以在某些事件触发或者某些条件满足时进行页面的跳转操作,而不仅仅是在模板中静态地声明。同时,编程式导航还可以获得更多的路由和导航相关信息,如当前路由对象、路由参数等。 总结来说,Vue声明式导航更加适用于简单的页面跳转,可以通过在模板中声明来完成;而Vue编程式导航更加适用于复杂的导航逻辑和条件性的页面跳转,可以通过在代码中调用相关方法来完成。两者可以根据实际需求来选择合适的方式进行页面导航。 ### 回答3: Vue声明式导航和编程都是Vue.js框架中用于导航的不同方式。 Vue声明式导航指的是通过使用Vue.js提供的router-link组件来进行页面导航router-link是Vue.js官方提供的路由导航组件,它会根据配置的路由规则自动渲染对应的导航链接。使用router-link,我们可以在模板中直接使用类似于a标签的方式来进行页面导航,而不需要编写复杂的导航跳转逻辑。 Vue编程式导航是指通过使用Vue.js提供的router实例的编程接口来进行页面导航。通过在组件中获取router实例,并使用路由对象提供的方法,我们可以在Vue组件的回调函数中进行程序化的导航,比如跳转到指定的路由、前进或后退等操作。 在Vue声明式导航中,路由链接是在模板中声明的,即在html中直接使用router-link组件来生成对应的导航链接。这种方式更适合编写简单的页面导航逻辑,对于一些复杂的导航需求可能不太方便。 而在Vue编程式导航中,页面导航逻辑是在Vue组件中通过编程的方式进行操作的,可以根据不同的情况来进行相应的导航操作。这种方式适合处理一些复杂的导航逻辑,比如根据用户权限进行页面跳转等。 综上所述,Vue声明式导航和编程式导航都是Vue.js框架中用于导航的不同方式,可以根据实际需求选择使用哪种方式进行页面导航
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值