vue-router的基本使用

演示demo的工程结构

在这里插入图片描述

在index.js中引用vue-router

import VueRouter from 'vue-router'

Vue.use(VueRouter)

定义并导出路由

export default new VueRouter({
  routes: [
    {
      path: '/about',
      component: About
    },
    {
      path: '/home',
      component: Home,
      children: [
        {
          path: '/home/news',
          component: News
        },
        {
          path: 'message',
          component: Message,
          children: [
            {
              path: 'detail/:id',
              component: MessageDetail
            }
          ]
        }]
    },
    {
      path: '/',
      redirect: '/about'
    }
  ]
})

全局使用(main.js中)

使用router对象

import Vue from 'vue'
import App from './App'
import VueRouter from './router'


new Vue({
  el:'#app',
  components:{
    App
  },
  template:'<App/>',
  router:VueRouter
})

页面中使用路由:

<router-link> 是一个组件,该组件用于设置一个导航链接,切换不同 HTML 内容。 to 属性为目标地址, 即要显示的内容。
<router-view >路由匹配到的组件将渲染在这里

<router-link> 相关属性

to

表示目标路由的链接。 当被点击后,内部会立刻把 to 的值传到 router.push(),所以这个值可以是一个字符串或者是描述目标位置的对象。

replace

设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),导航后不会留下 history 记录。

append

设置 append 属性后,则在当前 (相对) 路径前添加其路径。例如,我们从 /a 导航到一个相对路径 b,如果没有配置 append,则路径为 /b,如果配了,则为 /a/b

路由跳转

可以使用replace进行页面替换:

this.$router.replace({ name: _name });

也可以使用push进行跳转:

   this.$router.push({ path: "/" });

它们的区别如下:
在这里插入图片描述

App.vue

 <template>
    <div class="row">
      <div class="list-group">
         <!--生成路由链接-->
         <!-- 使用 router-link 组件来导航. -->
   	  	 <!-- 通过传入 `to` 属性指定链接. -->
  		 <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
         <router-link to="/about" class="list-group-item">About</router-link>
         <router-link to="/home" class="list-group-item">Home</router-link>
      </div>
      <div class="col-xs-6">
        <div class="panel">
          <div class="panel-body">
            <!--显示当前组件-->
            <keep-alive>
              <!-- 路由出口 -->
  			  <!-- 路由匹配到的组件将渲染在这里 -->
  			  <!--将msg="abc"传递到所匹配到的路由组件-->
              <router-view msg="abc"></router-view>
            </keep-alive>
          </div>
        </div>
      </div>
   </div>
</template>

About.vue

<template>
  <div>
    <div>{{msg}}</div>
  </div>
</template>

<script>
  export default {
    props:{
      msg:String
    }
  }
</script>

Home.vue

<template>
  <div>
    <h2>Home</h2>

    <ul class="nav nav-tabs">
      <li>
        <router-link to="/home/news">News</router-link>
      </li>
      <li>
        <router-link to="/home/message">Message</router-link>
      </li>
    </ul>

    <router-view></router-view>
  </div>
</template>

<script>
  export default {}
</script>

News.vue

<template>
  <div>444
  </div>
</template>

<script>
  export default {}
</script>

Message.vue

<template>
  <div>333
  </div>
</template>

<script>
  export default {}
</script>

MessageDetail.vue

<template>
  <div>555
  </div>
</template>

<script>
  export default {}
</script>

页面显示

/about
在这里插入图片描述
/home/news
在这里插入图片描述
/home/message
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值