Vue2 第二十节 vue-router (四)

这篇具有很好参考价值的文章主要介绍了Vue2 第二十节 vue-router (四)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.全局前置路由和后置路由

2.独享路由守卫

3.组件内路由守卫

4.路由器的两种工作模式

路由

作用:对路由进行权限控制

分类:全局守卫,独享守卫,组件内守卫

一.全局前置路由和后置路由

① 前置路由守卫:每次路由切换之前被调用或者初始化的时候被调用

 next() : 继续执行

router.beforeEach((to, from, next) => {
  console.log('前置路由守卫', to, from, next)
  if (to.meta.isAuth) {
    if (localStorage.getItem('school') === 'atguigu') {
      next()
    } else {
      alert('学校名错误')
    }
  } else {
    next()
  }
})

meta是路由元信息,是路由器提供给我们放数据的一个容器

Vue2 第二十节 vue-router (四),Vue,前端学习,vue.js,前端

 ② 后置路由守卫: 每次路由切换之后被调用或者初始化的时候被调用

router.afterEach((to, from) => {
  document.title = to.meta.title || "硅谷系统"
  console.log('后置路由守卫', to, from)
})

 代码汇总

// 该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router"
import About from '../pages/About'
import Home from '../pages/Home'
import News from '../pages/News'
import Message from '../pages/Message'
import Detail from '../pages/Detail'
const router = new VueRouter({
  routes: [
    {
      name: 'guanyu',
      path: '/about',
      component: About,
      meta: { title: '关于' }
      // 是否授权
    },
    {
      name: 'zhuye',
      path: '/home',
      component: Home,
      meta: { title: '主页' },
      children: [
        {
          // 不要加/
          name: 'xinwen',
          path: 'news',
          component: News,
          meta: { isAuth: true, title: '新闻' }
        },
        {
          // 不要加/
          name: 'xiaoxi',
          path: 'message',
          component: Message,
          meta: { isAuth: true, title: '消息' },
          children: [
            {
              name: 'xiangqing',
              path: 'detail', // 使用占位符声明并接收
              component: Detail,
              meta: { isAuth: true, title: '详情' },
              // 第一种写法:值为对象,该对象中的所有key-value都会以props形式传给Detail组件
              // 数据是写死的
              // props: { a: 1, b: 'hello' }
              // 第二种写法:值为bool值,如果bool值为真,就会把该路由组件收到的所有params参数,以props的形式
              // 传给Detail组件
              // props: true

              // 第三种写法,值为函数
              props ($route) {
                return {
                  id: $route.query.id,
                  title: $route.query.title
                }
              }
            }
          ]
        }
      ]
    }
  ]
})
// 全局前置路由守卫 --每次路由切换之前被调用或者初始化的时候被调用
router.beforeEach((to, from, next) => {
  console.log('前置路由守卫', to, from, next)
  if (to.meta.isAuth) {
    if (localStorage.getItem('school') === 'atguigu') {
      next()
    } else {
      alert('学校名错误')
    }
  } else {
    next()
  }
})
// 全局后置路由守卫 --每次路由切换之后被调用或者初始化的时候被调用
router.afterEach((to, from) => {
  document.title = to.meta.title || "硅谷系统"
  console.log('后置路由守卫', to, from)
})
export default router

二.独享路由守卫

独享路由守卫:某个路由独享的,只有前置,没有后置

Vue2 第二十节 vue-router (四),Vue,前端学习,vue.js,前端

 三. 组件内路由守卫

 分为进入守卫和离开守卫

进入守卫:通过路由规则,进入该组件时被调用

离开守卫:通过路由规则,离开该组件时被调用

export default {
  name: 'About',
  // 组件内守卫(进入守卫) 通过路由规则,进入该组件时被调用
  beforeRouteEnter (to, from, next) {
    console.log('beforeRouteEnter', to, from, next)
    if (to.meta.isAuth) {
      if (localStorage.getItem('school') === 'atguigu') {
        next()
      } else {
        alert('学校名错误')
      }
    } else {
      next()
    }
  },
  // 离开守卫:通过路由规则,离开该组件时被调用
  beforeRouteLeave (to, from, next) {
    console.log('beforeRouteLeave')
    next()
  }
}

四.路由器的两种工作模式

① 对于url来说,#及其后面的内容就是hash值,hash值不会包含在HTTP请求中,hash值不会带给服务器

②  两种工作模式

(1)history

  • 地址干净,美观,路径中没有#
  • 兼容性和hash模式相比较差
  • 应用部署上线的时候需要后端人员支持,解决刷新页面服务端404的问题

(2)hash:

  • 路径中有#,不美观
  • 若以后地址通过第三方手机app分享,若app校验严格,地址会标记为不合法
  • 兼容性比较好

③ 使用mode配置项进行配置

Vue2 第二十节 vue-router (四),Vue,前端学习,vue.js,前端文章来源地址https://www.toymoban.com/news/detail-633522.html

到了这里,关于Vue2 第二十节 vue-router (四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vue3】13-前端路由-Vue-Router的详解: 从入门到掌握

    路由其实是网络工程中的一个术语: 在 架构一个网络 时,非常重要的两个设备就是 路由器和交换机 。 当然,目前在我们生活中 路由器 也是越来越被大家所熟知,因为我们生活中都会用到 路由器 : 事实上, 路由器 主要维护的是一个 映射表 ; 映射表 会决定数据的流向; 路由

    2024年02月09日
    浏览(36)
  • 基于vscode开发vue3项目的详细步骤教程 3 前端路由vue-router

    1、Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客 2、Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目_水w的博客-CSDN博客 3、基于vscode开发vue项目的详细步骤教程_水w的博客-CSDN博客 4、基于vscode开发vue项目的详细步骤教程 2 第三方图标库FontAwesome_水w的

    2024年02月02日
    浏览(52)
  • vue 3 第二十九章:路由管理(Vue Router4.x基础知识)

    Vue Router 是 Vue.js 官方的 路由管理器 。它和 Vue.js 的 核心 深度集成,可以轻松地 构建单页面应用程序 。Vue Router 允许我们在应用程序中 定义路由 ,然后根据 URL 来 匹配路由 ,并 渲染对应的组件 。 Vue Router 的核心概念包括 路由 、 路由器 、 路由视图 和 导航守卫 。 路由

    2024年02月07日
    浏览(27)
  • Vue3+Vue-Router+Element-Plus根据后端数据实现前端动态路由——权限管理模块

    提示:文章内容仔细看一些,或者直接粘贴复制,效果满满 提示:文章大概 1、项目:前后端分离 2、前端:基于Vite创建的Vue3项目 3、后端:没有,模拟的后端数据 4、关于路径“@”符号——vite.config.js 文件里修改 提示:以下是本篇文章正文内容,下面案例可供复制粘贴使用

    2024年02月02日
    浏览(38)
  • 【退役之重学前端】使用vite+vue3+vue-router,重构react+react-router前后端分离的商城后台管理系统

    前言: 对前端各个技术板块,HTML、CSS、JavaScript、ES6、vue家族,整体上能“摸其大概”。笔者计划重构一个基于react的商城后台管理系统。 —— 2024年2月16日 vue3 sass bootstrap ES7 前后端分离 分层架构 模块化开发 npm vite git

    2024年02月20日
    浏览(42)
  • Vue入门六(前端路由的概念与原理|Vue-router简单使用|登录跳转案例|scoped样式|混入(mixin)|插件)

    路由(英文:router)就是对应关系 SPA指的是一个web网站只有一个唯一的一个HTML页面, 所有组件的展示与切换 都在唯一的一个页面内完成。 此时, 不同组件之间的切换 需要通过 前端路由 来实现 总结:在SPA项目中, 不同功能之间的切换 ,要 依赖于前端路由 来完成 通俗移动

    2024年01月22日
    浏览(38)
  • vue-router3.x和vue-router4.x相互影响的问题记录

    项目中有一个系统使用的微前端,主站使用是 vue2 实现的,使用的是 vue-router3.x 。子应用有使用 vue3 实现的,使用的为 vue-router4.x 。 该子应用中的页面A有通过操作按钮触发跳转到其他子应用页面B的需求,此时使用的是 vue-router4.x 的编程式导航API。 当通过点击主站的Tab切换回

    2023年04月26日
    浏览(31)
  • 路由,vue-router的基本用法,vue-router的常见用法$route.params、$router.push、$router.replace、$router.go

    路由(英文: router)就是 对应关系 。 SPA指的是一个web网站只有唯一的一个HTML页面, 所有组件的展示与切换 都在这唯一的一个页面内完成。此时, 不同组件之间的切换 需要通过 前端路由 来实现。 *结论:*在SPA项目中, 不同功能之间的切换 ,要 依赖于前端路由 来完成! 通俗

    2024年01月16日
    浏览(39)
  • vue-router笔记

    目的:为了实现SPA(单页面应用) vue-router是一个插件库 安装: 路由的配置路径:/src/router/index.js 路由组件的目录:/src/pages/ 一般组件的目录:/src/components/ 使用: main.js: App.vue: About.vue: 不可见的路由组件在哪?        被销毁了 嵌套路由的案例: 路由传参: query: 传参

    2024年02月12日
    浏览(36)
  • 【Vue-Router】别名

    后台返回来的路径名不合理,但多个项目在使用中了,不方便改时可以使用别名。可以有多个或一个。 First.vue Second.vue , Third.vue 代码同理 UserSettings.vue index.ts App.vue

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包