vue的滚动行为和路由信息

本文介绍了Vue Router的滚动行为,包括如何自定义页面滚动、保持滚动位置以及平滑滚动。同时,讲解了通过meta字段设置路由元信息,用于验证是否需要登录才能访问特定路由。此外,还阐述了路由的两种模式:hash模式和history模式,以及如何使用redirect和alias进行重定向和别名设置。通过实例代码深入理解这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

vue是前端的三大框架之一,跟随此文来学习:vue的滚动行为和路由元信息把!

一、路由的滚动行为

使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。路由的滚动行为,它让你可以自定义路由切换时页面如何滚动。

const router = new VueRouter({
  // 只有调用了history.pushState()的时候才会触发这个方法
  mode: 'history',
  base: process.env.BASE_URL,
  routes,
  // 使用这个方法实现期望滚动到哪一位置,
  scrollBehavior (to, from, savedPosition) {
    console.log(to,from,savedPosition);
    // 都是直接到顶部
    // return {x:0,y:0}

    // 按 前进 或 后退 和原生一致
    // if (savedPosition) {
    //   return savedPosition
    // } else {
    //   return { x: 0, y: 0 }
    // }

    // 滚动到锚点
    if (to.hash) {
      return {
        selector: to.hash,
        // 平滑滚动
        behavior: 'smooth',
      }
    }

    // 异步滚动   延迟2秒后返回顶部
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve({ x: 0, y: 0 })
      }, 2000)
    })
  }
})

二、路由元信息

定义的时候可以配置 meta 字段

通过 meta 字段可以验证需要登录的路由

const routes = [
  {
       path:'boy',
       name:'Boy',
       component: () => import('@/views/sex/boy.vue'),
       // meta 字段,req可以随意命名
       meta:{req:true},
     },
     {
       path:'girl',
       name:'Girl',
       component: () => import('@/views/sex/girl.vue')
     }
  	]
// 模拟登录功能
let login = true
router.beforeEach((to,from,next)=>{
  // 加载功能
  NProgress.start()
  if(to.meta.req){
    if(login){
      next()
    }else{
      next({path:'home'})
    }
  }else{
    next()
  }
})

三、路由的二种模式

hash 模式:

url 地址栏中存在 `#` 号的网址

history 模式:

url 地址栏中不存在 `#` 号的网址

四、重定向,别名

在路由规则中,可采用redirect来重定向另一个地址

// 路径写法
const routes = [{ path: '/home', redirect: '/' }]
// 命名写法
const routes = [{ path: '/home', redirect: { name: 'home' } }]

别名表示访问url时自由命名,不受约束,router会自动进行别名匹配,就像我们设置/的别名为/home,相当于访问 /

// alias是别名的key
const routes = [{ path: '/', component: HomeView, alias: '/home' }]

以上就是路由滚动行为和路由元信息的使用方法,还有不懂得地方可以在评论区里问我,以后会持续发布一些新文章,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风 与我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值