vue-router

2019-07-15  本文已影响0人  lyp82nkl

路由

路由是单页应用的路径管理器,单页应用相当于只有一个index.html页面,改变路径可切换至不同的页面

安装vue-router

npm install --save vue-router

引用

//在入口文件中引用
import router from 'vue-router'
//vue提供的use方法
 Vue.use(router)

配置路由文件,并在vue实例中注入

import HelloEarth from '@/components/HelloWorld'
import HelloWorld from '@/components/HelloWorld'


var rt = new router({ 
    routes:[{ 
        path:'/',//指定要跳转的路径 
        component:HelloWorld//指定要跳转的组件
         }] 
   })
  new Vue({ 
      el: '#app', 
      router:rt, 
      components: { App },
      template: ''
    })

路由的跳转

export default new Router({
  routes: [  //  配置路由
    {
      path: '/helloworld',  // 第一个路由,路径为 /helloworld,跳转到 HelloWorld 组件
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/helloearth',  // 第二个路由,路径为 /helloearth,跳转到 HelloEarth 组件
      name: 'HelloEarth',
      component: HelloEarth
    }
  ]
})

文件中,设置了两个路由,当输入不同网址时,就会显示不同的组件内容。但是不可能让用户每次都在地址栏中输入地址来实现跳转,所以可以以链接的形式,当用户点击某一个链接时,实现跳转。

<router-link to="/"></router-link>

<template>
    <ul>
        <li>
            <router-link  to="/helloworld"> HELLO WORLD </router-link>
        </li>
        <li>
            <router-link to="/helloearth">HELLO EARTH</router-link>
        </li>
    </ul>
</template>

当用户点击 “Hello World”时,浏览器的地址栏就会走 /helloworld 路径,显示 HelloWorld 组件;当点击“Hello Earth”时,浏览器的地址栏就会走 /helloearth 路径,显示 HelloEarth 组件。

路由参数的传递

<router-link  
    :to="{name:'helloworld',params:{msg:你好 世界}}"> 
    HELLO WORLD
// 绑定一个对象,给指定组件传递参数,参数为对象形式
 </router-link>



 读取参数: $route.params.XXX
 方式:===/helloworld/你好世界
//给 HelloWorld 组件传递的参数,得 HelloWorld 来接收
<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <h2>{{$route.params.msg}}</h2>  // 读取参数使用 $route.params.xxx 形式
  </div>
</template>

router-link组件的props

<router-link 
    :to="{path: '/helloearth',query:{msg: 只有一个地球}}">
 </router-link>
 方式:===/helloworld?name=XX&count=xxx
 函数模式
 
  你可以创建一个函数返回 props。这样你便可以将参数转换成另一种类型,
  将静态值与基于 路由的值结合等等。
  
  const router = new VueRouter({
      routes: [
      { path: '/search', component: SearchUser, props: (route) => ({
          query: route.query.q }) }
          ]
          })

栗子:

<router-link 
:to='/Home' replace tag="li" active-class="active" exact>
Home
</router-link>
这个栗子表示一个<li>标签,点击时跳转到Home组件中,并且不会留下历史跳转记录,
并且开启router-link严格模式
<router-link 
:to='/Home'>Home</router-link>
渲染结果:
<a href="Home">Home</a>
<router-link
 :to="{ path: 'register', query: { name: 'xx' }}">router</router-link>
渲染结果:
<a href="/register?name=xx">router</a>
<router-link 
:to='/Home' tag="li" >Home</router-link>
渲染结果:
<li>Home</li>
此时依旧会监听点击事件,触发导航
上一篇下一篇

猜你喜欢

热点阅读