Vue-路由(vue-router)

发布时间 2023-11-17 16:48:41作者: 忙着可爱呀~

路由:Vue-router(vue路由插件)

  先了解下 route、routes、router三者之间的区别

  (加$只是为了区别其它变量)

  router:一般指的是路由实例 ,如:vue的编程式导航 this.$router.push()

  routes:指创建 vue-router 路由实例的配置项,用来配置多个路由对象

  route:指路由对象,如:this.$route 指当前路由对象

  作用:

    1)通过路由,点击Tap在当前页面的某个板块不跳转展示相应的组件;

    2)通过路由,点击Tap跳转到新的页面并展示对应的组件;

    前者相当于 <a href="javascript:;"/>,后者相当于 <a href="" target="_blank"/>。

    注1:Tap点击 <a href=""/> 跳转刷新页面,router 跳转不刷新页面;

    注2:第一次切换时,Vue 会渲染相应组件,在之后的切换中, Vue 不会重新销毁创建组件,生命周期只在第一次展示时调用,之后均不会调用,可以通过 watch 监听路由变化进行相应的操作

  示例:

  1)安装路由 

       npm install --save-dev vue-router

  2)引入、使用、配置、注入路由

       引入:在 main.js 中引入路由 或 引入新建的路由文件

       使用:在main.js 中使用路由

       配置:在 main.js 中配置路由 或 引入新建一个路由文件 router.js在 router.js中配置

       注入:在 main.js 中注入路由

  示例:

  (1)在 main.js 中配置路由的情况

  

  (2)新建 router  配置路由(推荐)

  

  3)在组件中使用路由

  页面跳转规律:

    平级路由之间的跳转只更新平级之间的组件页面

    如下面示例中的:HelloWorld(首页路由) 和 RouterBottomNav(另一个页面路由)属于平级路由 ,切换时更新同一个 <router-view/>;两个子级路由更新同一个 <router-view/>

  效果图/

  

 

  在router文件中配置路由 

  

  在组件中使用路由

  

  

 进阶

  1)动态路由:

  作用:同一个组件展示不同的内容,但是地址参数不同;

           简单的说就是复用同一个组件,路由地址不变,路由参数改变;

           如:一个应用的个人中心的排版布局基本上没区别,区别主要是在内容上;这时可以使用同一个个人中心组件展示不同用户的信息,只需在路由中加入用户参数加以区别。

  注1:在 Vue 实例内部,可以通过 this.$router 访问路由实例,this.$route 访问当前路由对象       

  注2:以下示例中使用 watch 监听路由变化的原因是,第一次切换时,Vue 会渲染相应组件,在之后的切换中, Vue 不会重新销毁创建组件,而是复用组件,生命周期只在第一次展示时调用,之后均不会调用,可以通过 watch 监听路由变化进行相应的操作

  示例:

  创建、引入、配置、使用 RouterActive.vue 组件

 

  

 2)嵌套路由

  作用:父级路由中包含子级路由之间的切换

           如:首页是根路由,首页中含有 苹果、香橙、甜橘, tap ,点击tap的时候某个板块(组件)展示这些水果的详情

  示例图:

  

  示例:

  引入、使用、配置路由

  

 

  组件中使用路由

  

  

 

 

  3)导航(路由)守卫

    定义:简单的讲就是对跳转的路由进行判断,从而做出相应的判断(如:在用户进行其他操作之前先进行判断是否登录或注册)

    

  )路由小细节

  Tag:改变路由默认的元素(默认 a 标签)

    示例:

    

 

   *:所有路由,当输入的地址发生错误时跳转到该路由地址

    示例:

    

  Name:定义路由名称

    示例:

    

  动态跳转:

    示例:

    

  指定展示默认的子级路由:

    示例:

    

  监听路由变化:

    示例:

    

  路由参数:

    params:同一个页面下的不同参数(如个人用户的页面都是使用同一类,但是个人用户的id不同)

    query:传递参数(地址 问号 ?后面的参数)

    meta:向路由传递参数

    示例:

    

 

 

   

   获取当前路由详细参数: