美文网首页前端学习
Vue-router-导航守卫(九)

Vue-router-导航守卫(九)

作者: 小二哥很二 | 来源:发表于2020-05-10 10:45 被阅读0次

一、全局守卫

1、全局守卫顾名思义,是定义全局的。守卫的作用之一就是在路由来回切换的时候,浏览器的title也随之变化
index.js 配置全局导航守卫

// 全局导航守卫
// 前置守卫beforeEach(hook)
router.beforeEach((to, from, next) =>{
  // 从from跳转到to
  document.title = to.matched[0].meta.title;
  console.log(to);  // 会发现meta.title在matched[0]里面
  console.log('+++++');
  // next函数必须调用,否则报错,里面可以传参,传入路由路径也可以
  next()
});

// 后置钩子afterEach,不需要调用next
router.afterEach((to, from) => {
  console.log('-----');
})
全局导航守卫

二、路由独享守卫

1、路由独享守卫是设置路由映射里的
index.js 配置路由独享守卫

// 配置路由映射关系,一个映射关系对应一个对象
  const routes = [
  {
    path: '',
    // redirect重定向,设置默认导航栏
    redirect: '/home'
  },
  {
    path: '/user/:userId',
    component:User,
    // meta供title跳转用
    meta:{
      title:'用户'
    },
    // 路由独享守卫,顾名思义写在路由映射里的,详细可以查官网
    beforeEnter:(to, from, next) =>{
      console.log('user beforeEnter');
      next();
    }
  }

三、组件守卫

1、在Vue生命周期里,我们切换路由,都会有个created和destroyed的过程,我们不想每次切换都创建,节省性能。并且切换回来的时候仍是上一次操作选中
Home.vue

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
<!--    配置子组件路由的router-link-->
    <router-link to="/home/news" tag="button">新闻</router-link>
    <router-link to="/home/message" tag="button">消息</router-link>

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

<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'

export default {
  name: 'Home',
  components: {
    HelloWorld
  },
  data(){
    return {
      path:'/home/news'
    }
  },
  // vue实例和组件 生命周期里的其中一个函数created ==>当组件被创建,就回调created
  created() {
    console.log('created-home');
    // 此时可以设置当点击某个导航栏时候,浏览器title也更改
    // document.title = '首页'
  },
  // 由于index.js映射里,home下没设置默认子映射,所以这里加个activated使其选择默认组件显示
  activated() {
    this.$router.push(this.path)
  },
  // 在离开Home路由之前,记录路由地址,在返回的时候,就默认显示上次操作的路由拉~~~
  beforeRouteLeave (to, from, next) {
    console.log(this.$route.path);
    this.path = this.$route.path;
    next();
  }
  // 当点击其它路由的时候,该组件被销毁,回调destroyed函数,默认会执行销毁生命周期
  // destroyed() {
  //   console.log('destroyed');
  // }
}
</script>

2、keep-alive属性:里面有两个属性,一个include,一个exclude,后面接路由的name
App.vue配置

<!-- keep-alive的作用是当路由之间相互切换,切换回来的时候还是保持上次的操作,
    也就是不执行destroy。它对组件进行缓存,节省性能-->
    <!-- keep-alive里加上include=“User”,代表只有路由User.vue会被缓存;相反exclude-->
    <keep-alive exclude="Profile">
      <router-view/>
    </keep-alive>

相关文章

  • Vue-router-导航守卫(九)

    一、全局守卫 1、全局守卫顾名思义,是定义全局的。守卫的作用之一就是在路由来回切换的时候,浏览器的title也随之...

  • vue学习笔记(八)导航守卫(全局守卫,路由独享,组件内守卫)

    导航守卫-全局守卫 导航守卫-路由独享 导航守卫-组件内守卫

  • vue-路由导航守卫&异步组件

    导航守卫包括全局导航守卫、路由守卫、组件局部守卫 全局导航守卫 在全局导航守卫中,每次路由的跳转他们三个都会被触发...

  • vue导航守卫

    根据作用域的不同,vue导航守卫分三种:全局导航守卫、组件内部导航守卫、路由独享守卫 全局导航守卫,在main.j...

  • vue导航守卫

    导航守卫:vue-router主要提供跳转或取消的方式守卫导航, 导航守卫分为全局前置守卫、全局解析守卫、全局后置...

  • vue-router进阶

    导航守卫 vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航(路由发生改变才会守卫)。参数 ...

  • vue-router 路由导航守卫

    导航守卫是用取消或者通过的方式来守卫导航,导航守卫有全局的 页面级的组件级的 导航些带的参数发生变化的时候导航守卫...

  • vue-router 进阶

    导航守卫 导航守卫主要用来通过跳转或取消的方式守卫导航。 参数或查询的改变并不会触发进入/离开的导航守卫。 1、全...

  • 导航守卫

    vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航 全局守卫 全局前置守卫 当一个导航触发时...

  • Router界面切换(四)导航守卫(导航控制)

    前言 导航守卫主要用来通过跳转或取消的方式守卫导航。 使用router进行界面切换,我们可以通过守卫导航正在切换的...

网友评论

    本文标题:Vue-router-导航守卫(九)

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