当前位置:   article > 正文

[Vue]路由

[Vue]路由

Vue路由

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

路由基本使用

  1. 下载 VueRouter 模块到当前工程,版本3.6.5 (vue2)

    npm i vue-router@3.6.5
  2. main.js中引入VueRouter

    import VueRouter from 'vue-router'
  3. 注册插件

    App.use(VueRouter)
  4. 创建路由对象

    const router = new VueRouter()
  5. 注入,将路由对象注入到new Vue实例中,建立关联

    1. // import router from '@/router/index'
    2. new Vue({
    3.   render: h => h(App),
    4.   router:router
    5. }).$mount('#app')
  6. 配置路由规则

    1. // 1. vue i vue-router@3.6.5
    2. // 2. import VueRouter
    3. import Vue from 'vue'
    4. import VueRouter from 'vue-router'
    5. import FindMusic from '@/views/FindMusic'
    6. import MyMusic from '@/views/MyMusic'
    7. import FriendMusic from '@/views/FriendMusic'
    8. // 3. vue安装插件
    9. Vue.use(VueRouter)
    10. // 4.新建VueRouter对象
    11. const router = new VueRouter({
    12. // 6.配置规则
    13.  routes:[
    14.   {path:'/find',component:FindMusic},
    15.   {path:'/my',component:MyMusic},
    16.   {path:'/friend',component:FriendMusic}
    17. ]
    18. })
    19. export default router
  7. 配置路由出口 <router-view>

    1. <div>
    2.    <div class="footer_wrap">
    3.        <!-- 配置导航 -->
    4.        <!-- vue-router 提供了一个全局组件 router-link (取代 a 标签) -->
    5.        <!-- 1.能跳转,配置 to 属性指定路径(必须) 。本质还是 a 标签 ,to 无需 # -->
    6.     <!-- 2.能高亮,默认就会提供高亮类名,可以直接设置高亮样式 -->
    7.        <!-- router-link-active模糊匹配 router-link-exact-active精准匹配-->
    8.        <router-link to="/find">发现音乐</router-link>
    9.     <router-link to="/my">我的音乐</router-link>
    10.     <router-link to="/friend">朋友</router-link>
    11.    </div>
    12.    <div class="top">
    13.        <!-- 配置路由出口 -->
    14.        <router-view></router-view>
    15.    </div>
    16. </div>

声明式导航--路由传参

  • 查询参数传参

  • 动态路由传参

查询参数传参
  • 如何传参?

    <router-link to="/path?参数名=值"></router-link>

  • 如何接受参数

    固定用法:$route.query.参数名

动态路由传参
  • 配置动态路由

    动态路由后面的参数可以随便起名,但要有语义

    1. const router = new VueRouter({
    2.   routes: [
    3.    ...,
    4.     {
    5.      // /search/:words 表示,必须要传参数。如果不传参数,也希望匹配,可以加个可选符"?
    6.      path: '/search/:words',
    7.      component: Search
    8.   }
    9.   ]
    10. })
  • 配置导航链接

    to="/path/参数值"

  • 对应页面组件接受参数

    $route.params.参数名

    params后面的参数名要和动态路由配置的参数保持一致

查询参数传参 VS 动态路由传参
  1. 查询参数传参 (比较适合传多个参数)

    1. 跳转:to="/path?参数名=值&参数名2=值"

    2. 获取:$route.query.参数名

  2. 动态路由传参 (优雅简洁,传单个参数比较方便)

    1. 配置动态路由:path: "/path/:参数名"

    2. 跳转:to="/path/参数值"

    3. 获取:$route.params.参数名

    注意:动态路由也可以传多个参数,但一般只传一个

重定向
{ path: 匹配路径, redirect: 重定向到的路径 },
比如:
{ path:'/' ,redirect:'/home' }
404

配置在其他路由规则的最后面\

path: "*" (任意路径) – 前面不匹配就命中最后这个

  1. import NotFind from '@/views/NotFind'
  2. const router = new VueRouter({
  3.   routes: [
  4.     ...
  5.     { path: '*', component: NotFind } //最后一个
  6.   ]
  7. })

编程式导航--两种路由跳转

编程式导航:用JS代码来进行跳转

两种语法:

  • path 路径跳转 (简易方便)

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

path路径跳转

特点:简易方便

  1. //简单写法
  2. this.$router.push('路由路径')
  3. //完整写法
  4. this.$router.push({
  5.   path: '路由路径'
  6. })

传参:

  • query传参

  1. //简单写法
  2. this.$router.push('/路径?参数名1=参数值1&参数2=参数值2')
  3. //完整写法
  4. this.$router.push({
  5.   path: '/路径',
  6.   query: {
  7.     参数名1: '参数值1',
  8.     参数名2: '参数值2'
  9.   }
  10. })
  • 动态路由传参

  1. //简单写法
  2. this.$router.push('/路径/参数值')
  3. //完整写法
  4. this.$router.push({
  5.   path: '/路径/参数值'
  6. })
name 命名路由跳转

特点:适合 path 路径长的场景

  • 路由规则,必须配置name配置项

    { name: '路由名', path: '/path/xxx', component: XXX },

  • 通过name来进行跳转

    1. this.$router.push({
    2.   name: '路由名'
    3. })

传参:

  • query传参

  1. this.$router.push({
  2.   name: '路由名字',
  3.   query: {
  4.     参数名1: '参数值1',
  5.     参数名2: '参数值2'
  6.   }
  7. })
  • 动态路由传参

  1. this.$router.push({
  2.   name: '路由名字',
  3.   params: {
  4.     参数名: '参数值',
  5.   }
  6. })

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/283757
推荐阅读
相关标签
  

闽ICP备14008679号