编程式导航、缓存路由组件、路由守卫、Vue UI组件库【VUE】

这篇具有很好参考价值的文章主要介绍了编程式导航、缓存路由组件、路由守卫、Vue UI组件库【VUE】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

6.5 编程式路由导航

  1. 作用:不借助<router-link> 实现路由跳转,让路由跳转更加灵活

  2. 具体编码:

    //$router的两个API
    this.$router.push({
    	name:'xiangqing',
    		params:{
    			id:xxx,
    			title:xxx
    		}
    })
    
    this.$router.replace({
    	name:'xiangqing',
    		params:{
    			id:xxx,
    			title:xxx
    		}
    })
    this.$router.forward() //前进
    this.$router.back() //后退
    this.$router.go() //可前进也可后退
    

6.6 缓存路由组件

  1. 作用:让不展示的路由组件保持挂载,不被销毁
  2. 具体编码:
<keep-alive include="News">
	<router-view></router-view>
</keep-alive>

6.7 两个新的声明周期钩子

  1. 作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。
  2. 具体名字:
    (1)activated路由组件被激活时触发
    (2)deactivated路由组件失活时触发

6.8 路由守卫

  1. 作用:对路由进行权限控制
  2. 分类:全局守卫、独享守卫、组件内守卫
  3. 全局守卫:
//全局前置守卫:初始化时执行、每次路由切换前执行
   router.beforeEach((to,from,next)=>{
   	console.log('beforeEach',to,from)
   	if(to.meta.isAuth){ //判断当前路由是否需要进行权限控制
   		if(localStorage.getItem('school') === 'atguigu'){ //权限控制的具体规则
   			next() //放行
   		}else{
   			alert('暂无权限查看')
   			// next({name:'guanyu'})
   		}
   	}else{
   		next() //放行
   	}
   })
   
   //全局后置守卫:初始化时执行、每次路由切换后执行
   router.afterEach((to,from)=>{
   	console.log('afterEach',to,from)
   	if(to.meta.title){ 
   		document.title = to.meta.title //修改网页的title
   	}else{
   		document.title = 'vue_test'
   	}
   })

router/index.js文章来源地址https://www.toymoban.com/news/detail-437562.html

//该文件专门用于创建整个应用的路由器
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: [
                {
                    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: '详情'},

                            // props 的第一种写法,值为对象,该对象中的所有 key-value都会以props的形式传给Detail组件
                            // props: {a:1, b:'hello'}

                            // props 的第一种写法,值为布尔值,若布尔值为真,就会把该路由组件收到的所有params参数,以props形式传给Detail组件
                            // props: true,

                            // props 的第一种写法,值为函数
                            props($route){
                                return {id: $route.query.id, title: $route.query.title}
                            }
                        }
                    ]
                }
            ]
        },
        
    ]
})
// 全局前置路由守卫 ———— 初始化的时候被调用、每次路由切换之前被调用
router.beforeEach((to, from, next) => {
    console.log('前置路由守卫', to, from);
    if(to.meta.isAuth){ //判断是否需要鉴权
        if(localStorage.getItem('school') === 'xianwenli'){
            next()
        }else{
            alert('学校名不对,无权限查看!')
        }
    }else{
        next()
    }
})

// 全局后置路由守卫 ———— 初始化的时候被调用、每次路由切换之后被调用
router.afterEach((to, from) => {
    console.log('后置路由守卫', to, from);
    document.title = to.meta.title || '系统'
})
export default router
  1. 独享守卫
   beforeEnter(to,from,next){
   	console.log('beforeEnter',to,from)
   	if(to.meta.isAuth){ //判断当前路由是否需要进行权限控制
   		if(localStorage.getItem('school') === 'atguigu'){
   			next()
   		}else{
   			alert('暂无权限查看')
   			// next({name:'guanyu'})
   		}
   	}else{
   		next()
   	}
   }
  1. 组件内路由守卫
   //进入守卫:通过路由规则,进入该组件时被调用
   beforeRouteEnter (to, from, next) {
   },
   //离开守卫:通过路由规则,离开该组件时被调用
   beforeRouteLeave (to, from, next) {
   }

6.9 路由器的两种工作模式

  1. 对于一个url来说,什么是hash值?——#及其后面的内容就是hash值。
  2. hash值不会包含在HTTP请求中,即:hash值不会带给服务器。
  3. hash模式:
    (1)地址中永远带着#号,不美观。
    (2)若以后地址通过第三方收集app分享,若app校验严格,则地址会被标记为不合法。
    (3)兼容性好
  4. history模式:
    (1)地址干净,美观。
    (2)兼容性和hash模式相比略差。
    (3)应用部署上线时需要后端人员的支持,解决刷新页面服务端404的问题。

第七章:Vue UI组件库

7.1 移动端常用 UI 组件库

  1. Vant https://youzan.github.io/vant
  2. Cube UI https://didi.github.io/cube-ui
  3. Mint UI http://mint-ui.github.io

7.2 PC端常用 UI 组件库

  1. Element UI https://element.eleme.cn
  2. IView UI https://www.iviewui.com

到了这里,关于编程式导航、缓存路由组件、路由守卫、Vue UI组件库【VUE】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue--》深入理解 Vue 3 导航守卫,掌握前端路由的灵魂技能!

    目录 vue3导航守卫讲解与使用 element-ui的安装与使用 配置路由和设置路径别名

    2024年02月05日
    浏览(49)
  • 20230706----重返学习-vue路由导航守卫相关-物美后台管理系统

    常见面试题 面试题:介绍一下 vue-router 中的导航守卫函数 面试题:介绍一下你对vue-router的理解? 导航守卫函数 面试题:介绍一下 vue-router 中的导航守卫函数 在每一次路由切换的时候,首先把路由匹配、导航确认等事宜先处理好-在此期间会触发一系列的钩子函数,这些函数

    2024年02月12日
    浏览(39)
  • Vue——路由守卫(全局前置路由守卫beforeEach、全局后置路由守卫router.afterEach、独享路由守卫beforeEnter、组件内路由守卫 )

     作用:对路由进行权限控制 分类:全局守卫、独享守卫、组件内守卫 目录 一、全局前置路由守卫router.beforeEach(切换之前调用,to、from、next参数) 改进代码 二、全局后置路由守卫router.afterEach( 切换之后调用,to、from参数,没有next参数) 三、独享路由守卫beforeEnter(某一

    2024年02月08日
    浏览(57)
  • 【vue2第十七章】VueRouter 编程式导航跳转传参(点击按钮跳转路由和如何传递参数)

    如何在js进行跳转路由 在一些需求中,我们需要不用点击a标签或者router-link,但是也要实现路由跳转,比如登陆,点击按钮搜索跳转。那么这种情况如何进行跳转呢? 直接再按钮绑定的方法中写 this.$router.push(\\\'路由路径\\\') 即可。 代码示范 this.$router.push(\\\"/跳转路径\\\") 或者 this

    2024年02月09日
    浏览(43)
  • vue3 setup语法糖 使用组件内的路由守卫beforeRouteEnter使用方法

    由于beforeRouteEnter在setup语法糖中是无法使用的,所以需要再起一个script标签 使用defineComponent方式来使用就可以了

    2024年02月11日
    浏览(54)
  • Vue2-导航守卫

    在Vue中,导航守卫是一组用于控制路由导航的钩子函数。这些钩子函数允许你在路由导航的不同阶段执行一些操作,比如在路由切换之前进行验证、处理路由变化等。 Vue提供了三种类型的导航守卫: 全局前置守卫 :在路由切换之前执行,适用于整个应用的路由。 路由独享的

    2024年01月23日
    浏览(40)
  • Vue 导航守卫

    导航守卫可以控制路由的访问权限,主要是用来监听路由的进入和离开。 当进入或离开路由组件时,可以通过导航守卫做一些拦截,实现权限登录等功能。 导航守卫分为三种:全局守卫、独享守卫、组件守卫。 参数说明: 每个导航守卫都有三个参数,全局后置守卫 afterEa

    2024年02月13日
    浏览(41)
  • Vue缓存路由组件

    作用:让不展示的路由组件保持挂载,不被销毁

    2024年02月12日
    浏览(36)
  • Vue3 中 导航守卫 的使用

    在编写vue里的登录注册时,我们始终绕不开对导航守卫的使用,vue-router4.0版里有一些重要更新,在这里分享给大家。 正如其名, vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。这里有很多方式植入路由导航中:全局的,单个路由独享的,或者组件级的。

    2024年02月02日
    浏览(42)
  • 前端vue入门(纯代码)35_导航守卫

    星光不问赶路人,时光不负有心人 【 33.Vue Router--导航守卫 】 导航守卫 正如其名, vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。 记住 参数或查询的改变并不会触发进入/离开的

    2024年02月16日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包