【Vue】路由

作者: WilsonPan | 来源:发表于2020-04-24 20:57 被阅读0次

快速入门


  1. 安装路由
npm install --save vue-router
  1. 定义组件
<template>
  <div>
    <h3>Home</h3>
    <router-link to="/login">Login</router-link>
  </div>
</template>
<script>
export default {};
</script>
  1. 定义路由规则
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

export default new VueRouter({
    mode: 'history',
    routes: [
        { path: '/', component: () => import('../views/home.vue') },
        { path: '/login', component: () => import('../views/login.vue') },
    ]
});
  1. 在需要显示路由位置放<router-view />
    <router-view />

这就完成一个简单路由

深入路由


基础

VueRouter.model :

  • hash(默认):使用 URL 的 hash 来模拟一个完整的 URL
  • history :利用 history.pushState API 来完成 URL 跳转而无须重新加载页面
    <router-link> : 路由功能导航,默认生成<a>标签,可以使用tag属性修改生成的标签
    <router-view />
  • 路由出口,匹配到的路由会在这里渲染
动态路由

通常链接需要带上参数,根据参数显示不同结果
Vue动态路由用":" 匹配路径参数,然后就匹配的参数放入$route.params

  1. 定义动态路由,这里需要对路由命名,获取名称和性别
        { path: '/login/:username/:sex', name: 'login', component: () => import('../views/login.vue') },
  1. 路由链接 - 需要路由命名
<router-link :to="{ name: 'login',  params: { username, sex } }">Login</router-link>
<!--等价于-->
<router-link to="/login/WilsonPan/1">Login</router-link>
  1. 组件获取路由参数
<h3>username : {{ this.$route.params.username }}</h3>
<h3>sex : {{ this.$route.params.sex === 1 ? "男" : "女" }}</h3>

注:除了可以设置路由参数,还可以设置query参数

<router-link :to="{ name: 'login', query: { id: 3 }, params: { username, sex } }">Login</router-link>
<!--等价于-->
<router-link to="/login/WilsonPan/1?id=3">Login</router-link>

组件获取query参数

<h3>id : {{ this.$route.query.id }}</h3>
嵌套路由

一个路由渲染的页面包含另外的路由

  1. 定义路由
{
            path: '/', 
            name: 'home', 
            component: () => import('../views/home.vue'), 
            children: [
                { path: '/', component: () => import('../components/ComponentDemo.vue') },
                { path: '/directives', component: () => import('../components/Directives.vue') }

            ]
        }
  1. 在需要显示子路由的地方放子路由渲染页面
<router-view />
导航守卫

导航守卫主要用来通过跳转或取消的方式守卫导航,导航守卫有全局的,单个路由的,组件级别,用于未登录控制访问,控制访问等。

全局路由

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
  // ...
})
  • to: Route: 即将要进入的目标路由对象
  • from: Route: 当前导航正要离开的路由
  • next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

路由独享的守卫

const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})

组件内的守卫

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当守卫执行前,组件实例还没被创建
  },
  beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
  }
}

相关文章

  • Vue应用

    Vue项目 Vue结构 Vue项目打包与发布 Vue语法二 Vue网络请求 Vue路由 动态路由 编程式路由导航

  • vue路由、自定义指令、脚手架

    *Vue vue-router 一、路由 一、导航式路由 路由路径由

  • Vue路由

    一、Vue路由基础用法: 二、Vue路由配置的抽出 三、路由动态传值: 四、路由的跳转方式: 五、路由的hash模...

  • 手写 Vue Router、手写响应式实现、虚拟 DOM 和 D

    Vue-Router 原理实现 一、Vue-Router 动态路由 二、Vue-Router 嵌套路由 三、Vue...

  • 2018-09-19 vue 八

    一 :路由路由:vue-router是Vue的工具库 vue-router.js下载:npm install ...

  • 6 VUE路由

    vue-> SPA应用,单页面应用(引入vue-router.js) 路由嵌套(多层路由): 路由其他信息:

  • vue路由的介绍(二)--vue动态路由和get的传值

    vue动态路由和get的传值---->同属于路由的传参 1,vue动态路由: 动态路由的配置: ①,在配置路由时加...

  • 2018-09-23 路由

    1.路由 路由:vue-router是Vue的工具库 vue-router.js下载:npm install ...

  • 2018-09-19 Vue 第八天

    1.路由 路由:vue-router是Vue的工具库 vue-router.js下载:npm install ...

  • vue路由

    vue路由--- SPA应用,单页面应用vue-resouce 交互vue-router 路由根据不同url地址...

网友评论

    本文标题:【Vue】路由

    本文链接:https://www.haomeiwen.com/subject/toxfwhtx.html