vue中的路由

路由从创建到使用

路由的作用:监听url地址栏的变化,根据url加载url对应的页面/组件

一、认识路由

1.引入vueRouter插件

方式一:CDN引入

<script src="https://cdn.jsdelivr.net/npm/vue@2.7.10"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/3.5.4/vue-router.min.js" integrity="sha512-zxWuRslhjyZyRAYInXTNl4vC/vBBwLQuodFnPmvYAEvlv9XCCfi1R3KqBCsT6f9rk56OetG/7KS9dOfINL1KCQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

方式二:本地引入

<script src='vue.js'></script>
<script src='vue-router.js'></script>

方式三:cnpm下载

cnpm install vue-router

2.定义组件

  let myA = {

templete:`<div></div>`

}

3.创建路由对象数组

const routes=[       

        {       

        path:'article',

        component:article

        },

        {

        path:'/column',

        component:column

        }

]

4.创建路由器实例对象,将路由对象数组注入到路由器对象中

let router = new VueRouter({

        routes

});

5.将路由器对象注入到vue实例中

new Vue({

        router

});

6.使用路由

跳转到页面

router-link to='/article'

路由出口匹配路由器对应的页面

router-view

<body>
  <div id="app">
    <!-- 5.使用路由 -->
    <router-link to="/article">这是文章页面</router-link>
    <router-link to="/column">这是栏目页面</router-link>
    <router-view></router-view>
  </div>
  <script>
    // 2.定义一个组件
    let article = {
      template: `
        <div>文章页面</div>
      `
    };
    let column = {
      template: `
        <div>栏目页面</div>
      `
    }
    //  1.配置路由对象数组
    let routes = [
      {
        path: '/article',
        component: article
      },
      {
        path: '/column',
        component: column,
      }
    ]

    // 3.创建一个路由器实例  将路由对象数组注入到路由器对象中
    const router = new VueRouter({
      routes
    });
    new Vue({
      // 4.将路由器对象注入到vue实例中
      router,
      el: '#app',
      data: {

      },
    })
  </script>
</body>

二、动态路由

需要把某种模式匹配到的所有路由,全部映射到同一个组件

比如:有一个user组件,对于所有id不同的用户,都要使用这个组件来渲染,这时就可以在vue-router的路径中使用动态路径参数来达到这个效果

<body>
  <div id="app">
    <!-- 5.使用路由 -->
    
    <router-link to="/user/1">这是用户页面</router-link>
    <router-view></router-view>
  </div>
  <script>
    // 2.定义一个组件
   
    let user = {
      template: `
        <div>用户页面</div>
      `,
      // 方法一:
      // created () {
      //   console.log(this.$route);
      // }
      // 方法二:
      // watch: {
      //   $route (to, from) {
      //     console.log(to, from);
      //   }
      // }
      beforeRouteUpdate (to, from) {
        console.log(to, from);
      }
    };

    //  1.配置路由对象数组
    let routes = [
      
      {
        path: '/user/:id',
        component: user
      }

    ]

    // 3.创建一个路由器实例  将路由对象数组注入到路由器对象中
    const router = new VueRouter({
      routes
    });
    new Vue({
      // 4.将路由器对象注入到vue实例中
      router,
      el: '#app',
      data: {

      },
    })
  </script>
</body>

监听路由参数的变化

created(){

        console.log(this.$route.params.id)

}

watch:{

        $route(to,from){

                console.log(to.params.id)

        }

}

//组件守卫

beforeRoutedate(tp,from){

        console.log(to.params.id)

}

三、嵌套路由  

就是 给一个路由添加子路由

{

        path:"/column",

        component:Column,

        children:[
                {

                        

                path:'/exma',

                component:Exam

                }

        ]

}

四、编程式导航

利用编程式导航实现页面跳转

传递数据

(1)利用path传递跳转页面路径,query传递参数

this.$router.push({

      path: "/aDetails",

      query: { id },

      });

接收数据

this.id = this.$router.query.id

(2)利用跳转页面的name和params传递数据

  this.$router.push({

        name: "ADetails",

        params: { id },

        query: { name: "zhangsan" },

      });

接收数据

this.id = this.$router.params.id

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值