vue-router插件的使用

本文介绍了Vue.js中的vue-router插件的使用方法,包括路由切换、配置路由、引入路由组件、在main.js中注册路由、路由出口的设置、声明式与编程式跳转、重定向、路由传参、路由参数的可选性以及如何重写push和replace方法。通过实例展示了如何在项目中实现页面间的导航和数据传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.vue-router插件的使用


+ 路由切换就是不断销毁和生成组件

+ 路由组件一般放置在views文件夹中

+ 配置路由一般放在router文件夹中 **一级路由**

  ```js
  // 配置路由
  import Vue from 'vue'
  import VueRouter from 'vue-router'
  
  // 使用插件
  Vue.use(VueRouter)
  
  // 引入路由组件
  import Home from '@正在上传…重新上传取消正在上传…重新上传取消iews/Home'
  import Register from '@iews/Register'
  import Search from '@iews/Search'
  import Login from '@iews/Login'
  
  
  // 配置路由
  export default new VueRouter({
      routes:[
          {
              path:'/home',
              component:Home
          },
          {
              path:'/register',
              component:Register
          },
          {
              path:'arch',
              component:Search
          },
          {
              path:'/login',
              component:Login
          }
      ]
  })
  ```

  

+ 使用路由

  1. 在入口文件`main.js`引入路由,然后注册路由

  ```js
  import router from '@/router'
  
  new Vue({
    render: h => h(App),
    router
  }).$mount('#app')
  ```

  2. 路由出口:展示路由组件的地方

     ```html
     <template>
       <div>
         <Header></Header>
         <!-- 路由出口 -->
         <router-view></router-view>
         <Footer></Footer>
       </div>
     </template>
     ```

     + `<router-view></router-view>` 就是展示路由组件的入口

     

3. 重定向路由

   ```json
    {
    path:'*',
    redirect:'/home'
     }
   ```

4. 路由的跳转

   + 声明式跳转 `router-link`

     1. 本质是 **a** 标签,只是简单跳转的时候可以用

        ```html
        <router-link to="/login">登录</router-link>
        <router-link to="/register">注册</router-link>
        ```

        + **to** 属性:跳转到哪个组件

   + 编程式跳转 `push|replace`

     1. 需要其他业务逻辑的时候,比如传参给其他路由

        + 在需要跳转的地方定义 **事件**

          ```html
          <button  type="button" @click="goSearch">搜索<tton>
          
          ```

        + 调用方法

          ```js
           methods:{
                  goSearch(){
                      this.$router.push('arch')
                  }
              }
          ```

          + 当我们注册路由之后 每个组件都有`$router` 属性 里面的 push | replace 方法可以帮助我们跳转到对应的了路由

            

        5. 路由原信息,自己定义的东西 **对象形式**

           ```js
           $route.meta //存放原信息
           ```

           + 里面存放的数据,非路由组件也能访问到

        

     + **路由传参**

       + 三种形式

         1. 对象形式

            ```js
             goSearch(){
                        this.$router.push({
                            name:'search',
                            params:{
                                keyword:this.keyword
                            }
                        })
                    }
            ```

            + 这种形式最好要在路由中定义name

              ```js
              {
                 name:'search',
                 path:'arch/:keyword',
                 component:Search,
                 meta:{isShow:true}
              }
              ```

              2. **字符串和模板字符串形式不做演示**

       + params参数

         1. 需要在路径上使用占位符

            ```js
              path:'arch/:keyword',
                        component:Search,
                        meta:{isShow:true}
            ```

         2. 存放在`$router.params`当中

       + query参数

         1. 类似于`ajax`中的GET传参?k=v的形式

         2. 存放在`$router.query`当中
+ 路由几个重要的点

  1. path 跳转不能和 params一起使用

  ```js
  goSearch(){
              // this.$router.push({
              //     name:'search',
              //     params:{
              //         keyword:this.keyword
              //     }
              // })
              this.$router.push({
                  path:"arch",
                  params:{
                     keyword: this.keyword
                  }
              })
  ```

  + 会报错的,必须结合name来使用

2. 如何指定params参数可传可不传

   + 如果params已经占位了,不穿的话URL会有问题

   + 解决方法

     在占位的时候在后面加一个问号

     ```js
     {
         name:'search',
         path:'arch/:keyword?',
         component:Search,
         meta:{isShow:true}
      }
     ```

3. 如果传一个空字符的解决方法

   ```js
   goSearch(){
               this.$router.push({
                   name:'search',
                   params:{
                       keyword:this.keyword || undefined
                   }
               })
       
4. 路由组件也可以传props

   + 有三种写法,因为不常用所以不写了

5. 重写push | replace 方法

   + 加入中断Promise的功能

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值