深入理解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 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
jQuery Ajax使用 全解析
Dec 15 Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 Javascript
THREE.JS入门教程(5)你应当知道的十件事
Jan 24 Javascript
JS延迟加载加快页面打开速度示例代码
Dec 30 Javascript
js实现文本框选中的方法
May 26 Javascript
javascript事件委托的方式绑定详解
Jun 10 Javascript
详解maxlength属性在textarea里奇怪的表现
Dec 27 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
Angular2环境搭建具体操作步骤(推荐)
Aug 04 Javascript
详解各版本React路由的跳转的方法
May 10 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
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
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
Document 对象的常用方法
2009/07/31 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python中获取网页状态码的两个方法
2014/11/03 Python
python数据结构之图的实现方法
2015/07/08 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
python3让print输出不换行的方法
2020/08/24 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
公司综合部的成员自我评价分享
2013/11/05 职场文书
物业管理专业个人的自我评价
2013/11/19 职场文书
晚会主持词开场白
2014/03/17 职场文书
工程部主管岗位职责
2015/02/12 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
2016年主题党日活动总结
2016/04/05 职场文书