Vue-Router基础

565 阅读1分钟

一、配置路由

在配置路由之前,需要完成两步配置,router.js中引入模块并挂载,main.js中导入路由并注册路由,这里默认两个文件在同一目录下,可根据实际情况进行相应的调整。

//router.js
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)

//main.js
import router from './router'
new Vue({
  el: '#app',
  components: { App },
  template: '<App/>',
  router
})

//app.vue
<template>
  <div id="app">
  //相当于路由的出口,可以理解为占位符
  //需要注意:父组件必须有路由出口,负责显示子路由
    <router-view></router-view>
  </div>
</template>

二、路由模块实现页面跳转的三种方式。

  1. 修改地址栏实现页面跳转
//router.js
//引入Page1和Page2组件
import Page1 from './components/Page1.vue'
import Page1 from './components/Page2.vue'
export default new Router({
    mode:'history',
    routes:[
        //在router.js文件中配置路由的匹配规则。
        //在浏览器中输入path属性对应的路径,渲染component组件
        {path:'/page1',component:Page1},
        //动态传参
        {path:'/page2/:id/:msg',component:Page2,name:'page2'},
        //路由重定向,访问根路径,重定向到page1页面
        {path:'/',redirect:'/page1'}
})
  1. 命名式导航:router-link
//app.vue
//to后面传入指定路径
//router-link默认渲染成a标签,用tag可修改标签类型
<router-link to="/page1" tag="li">Page1</router-link>
  1. 编程式导航:this.$router.push()
//Page1.vue
<template>
    <button @click="gotoPage2()"></button>
</template>

<script>
export default{
    methods:{
        gotoPage2(){
            //该方法会向history添加一条新纪录
            //参数可以是一个字符串路径,或者一个描述地址的对象
            this.$router.push('/page2')
            this.$router.push({path:'/page2'})
            //name对应router.js中组件name值,params里的属性与router.js中path的动态参数一致,等同于/page2/1/vuejs,可以通过$route.params获取
            this.$router.push({name:'page2',params:{id:1,msg:'vuejs'}})
        }
    }
}
</script>

三、route与router的区别

router为路由的实例对象,包括了路由常用的方法,如$router.push()

route是路由信息对象,可以通过$route.属性的方式进行访问。

  • $route.path 对应当前的路径
  • $route.params对应当前的参数 形式为key value组成的对象
  • $route.query对应查询参数 比如?foo=bar 形式同上
  • $route.name对应路由的名字