深刻理解Vue router的部分高级用法

今天要介绍的是路由元信息,滚动行为以及路由懒加载这几个的使用方法。前端

1.路由元信息vue

什么是路由元信息,看看官网的解释,定义路由的时候能够配置 meta 字段能够匹配meta字段,那么咱们该如何使用它,一个简单的例子,改变浏览器title的值。下面上代码。vue-router

//简单的我就不写了直接上解决方案
import Vue from 'vue'
import Router from 'vue-router'
import Login from '../login/Login'
import Home from '../pages/Home'
export default new Router({
  mode: 'history',
  routes: [
    {path: 'home', name: 'Home', component: Home,meta:{title:"主页"}}
    {path: 'login', name: 'Login', component: Login,meta:{title:"登陆"}}
  ]//欢迎你们加入前端全栈学习交流圈:866109386
})//帮助1-3年前端人员,突破技术瓶颈,提高思惟能力
//能够在跳转以前判断跳转的组件的名字并用window.document.title赋值
Router.beforeEach((to,from,next) => {
  window.document.title=to.meta.title
})

上面的是否是看上去很简单呢,可是它并不简单,我只是举了一个比较小的例子罢了。还要看你们怎么活学活用这样才好,可是我强调几点须要注意的浏览器

第一点就是这个beforeEach页面跳转以前调用,好处是好比想要改变title的值不会显得太突兀,能够直接替换。学习

第二点afterEach这个不用我说了吧这个是在组件跳转以后调用比较适用于返回页面以前浏览过的区域或者是让页面返回顶部的操做。code

2.滚动行为component

想必各位同窗应该知道我要讲些什么了没错就是页面的前进和后退时的滚动事件,怎么实现呢,有两种实现方式,先看代码。router

//刚才我说过的方法直接使用afterEach方法去实现组件的scrollTo归零
Router.afterEach((to,from,next) => {
  window.scrollTo(0,0)
})

下面是真正的回滚事件能够看看事件

//简单的我就不写了直接上解决方案
import Vue from 'vue'
import Router from 'vue-router'
import Login from '../login/Login'
import Home from '../pages/Home'
export default new Router({
  mode: 'history',
  routes: [
    {path: 'home', name: 'Home', component: Home,meta:{title:"主页"}}
    {path: 'login', name: 'Login', component: Login,meta:{title:"登陆"}}
  ],
  //有两种小的方式进行回滚
  //{ x: number, y: number }
  //{ selector: string, offset? : { x: number, y: number }}
  //第二种方式仅适用于(offset 只在 2.6.0+ 支持)
  scrollBehavior (to, from, savedPosition) {
  console.log(savedPosition)
  return { x: 0, y: 0 }
  }
})

上面咱们介绍了scrollBehavior的回滚方法或者说是scrollBehavior的滚动行为,可是想必你们可能对这种方法还有些不太理解,下面咱们看看官网是怎么讲解的,使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像从新加载页面那样。 vue-router 能作到,并且更好,它让你能够自定义路由切换时页面如何滚动。没错这个方法就是scrollBehavior滚动行为。另外须要注意: 这个功能只在支持 history.pushState 的浏览器中可用。更多的使用方法能够去官网去看看。路由

3.路由懒加载

或许不该该叫路由懒加载应该叫按需加载我觉着是更合适的。不解释之后用多了大家就会理解。下面上代码。

//代码很简单看看就知道了,下面只贴部分代码
{path:'homepages',name:'Homepages',component:homepages,resolve}

没错只要使用resolve就能实现按需加载的要求,是否是很简单,可是resolve还有不少其余使用方式建议去官网看看。另外诸如go(),history等方法的使用仍是去官网上看看本身写出来理解会更快。

相关文章
相关标签/搜索