Vue学习(二十二)路由器钩子和两种工作模式

本文介绍了Vue Router的生命周期钩子,包括激活与失活组件时的触发情况。同时,详细讲解了路由守卫的三种类型——全局守卫、独享守卫和组件内守卫,强调了它们在权限控制中的作用。接着,讨论了路由器的两种工作模式:hash模式和history模式,以及它们的优缺点和上线时的注意事项。最后,提到了Element-ui使用时的一些要点。
摘要由CSDN通过智能技术生成

路由器独有的生命周期钩子

  1. 作用: 捕获路由组件的激活状态
  2. 具体:
    1. activated:路由组件被激活时触发。
    2. deactivated:路由组件失活时触发。

路由守卫

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

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

全局路由守卫

所有的路由都可以使用

// 全局前置路由守卫,每次初始化和路由切换之前被调用
// to:去哪儿
// from:从哪儿来
// next:跳转
router.beforeEach((to, from, next) => {
    /* console.log(to, from)
    if (to.name === "xinwen" || to.name === "xiaoxi") {
        if (localStorage.getItem("school") === "尚硅谷") {
            next()
        } else {
            alert("权限不足")
        }
    } else {
        next()
    } */
    // document.title = to.meta.title || "Vue路由案例(Vue Router Demo)"
    if (to.meta.isAuth) {   // 判断是否需要鉴权
        if (localStorage.getItem("school") === "尚硅谷") {
            next()
        } else {
            alert("权限不足")
        }
    } else {
        next()
    }
})

// 全局后置路由守卫,每次初始化和路由切换之后被调用
// to:去哪儿
// from:从哪儿来
router.afterEach((to, from) => {
    document.title = to.meta.title || "Vue路由案例(Vue Router Demo)"
})

独享路由守卫

某一个路由所独享的守卫,只有前置路由守卫

{
	name: "xinwen",
	path: 'news',
	component: News,
	meta: {isAuth: true, title: '新闻', },
	// 进入之前
	beforeEnter: (to, from, next) => {
        if (to.meta.isAuth) {   // 判断是否需要鉴权
            if (localStorage.getItem("school") === "尚硅谷") {
                next()
            } else {
                alert("权限不足")
            }
        } else {
            next()
        }
    }
},

组件内守卫

组件所独有的路由守卫,通过路由规则进入时和离开时调用

beforeRouteEnter (to, from, next) {
    if (to.meta.isAuth) {   // 判断是否需要鉴权
        if (localStorage.getItem("school") === "尚硅谷") {
            next()
        } else {
            alert("权限不足")
        }
    } else {
        next()
    }
},
// 通过路由规则离开该组件时被调用
beforeRouteLeave (to, from, next) {
	next()
}

路由器的两种工作模式和打包上线

两种工作模式和打包上线

http://localhsot:8080/#/
  1. “#”:是url的hash值,#及之后的内容都是hash值。hash值不会包含在http请求中,不会带给服务器。
  2. hash模式:
    1. 地址中带#号,不美观。
    2. 通过第三方手机app分享,若app校验严格,则地址会被标记不合法。
    3. 兼容性较好。
  3. history模式:
    1. 地址干净,美观。
    2. 兼容性相比hash模式略差。
    3. 应用上线时需要后端人员支持,解决刷新页面404问题。

打包上线

使用命令:

npm run build
# 或
yarn run build

打包之后会生成一个dist的文件夹,将里面的内容部署上线

Element-ui使用注意

  1. 没有.babelrc文件,配置在babel.config.js文件中
  2. 官网上写的["es2015", { "modules": false }]在新版的vue-cli上使用["@babel/preset-env", { "modules": false }]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值