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


Posted in Javascript onAugust 15, 2018

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

1.路由元信息

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

//简单的我就不写了直接上解决方案
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:"登录"}}
  ]
})
//可以在跳转之前判断跳转的组件的名字并用window.document.title赋值
Router.beforeEach((to,from,next) => {
  window.document.title=to.meta.title
})

上面的是不是看上去很简单呢,但是它并不简单,我只是举了一个比较小的例子罢了。还要看大家怎么活学活用这样才好,但是我强调几点需要注意的

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

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

2.滚动行为

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

//刚才我说过的方法直接使用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等方法的使用还是去官网上看看自己写出来理解会更快。

总结

以上所述是小编给大家介绍的Vue router的部分高级用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
Jan 17 Javascript
jquery 按钮状态效果 正常、移上、按下
Aug 12 Javascript
JS实现双击屏幕滚动效果代码
Oct 28 Javascript
JS生成某个范围的随机数【四种情况详解】
Apr 20 Javascript
javascript常见数字进制转换实例分析
Apr 21 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
Apr 28 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
Sep 23 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
Bootstrap table使用方法总结
May 10 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
Sep 28 Javascript
React 高阶组件HOC用法归纳
Jun 13 Javascript
JS打印彩色菱形的实例代码
Aug 15 #Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 #Javascript
layui 优化button按钮和弹出框的方法
Aug 15 #Javascript
jQuery实现参数自定义的文字跑马灯效果
Aug 15 #jQuery
Webpack 4.x搭建react开发环境的方法步骤
Aug 15 #Javascript
React+Webpack快速上手指南(小结)
Aug 15 #Javascript
layui从数据库中获取复选框的值并默认选中方法
Aug 15 #Javascript
You might like
php输出全球各个时区列表的方法
2015/03/31 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python try except else使用详解
2021/01/12 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
别名指示符是什么
2012/10/08 面试题
初中生操行评语大全
2014/04/24 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
2014年工商所工作总结
2014/12/09 职场文书
政协委员个人总结
2015/03/03 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
业余无线电通联Q语
2022/02/18 无线电
python微信智能AI机器人实现多种支付方式
2022/04/12 Python