深入理解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 相关文章推荐
JQuery将文本转化成JSON对象需要注意的问题
May 09 Javascript
如何通过javascript操作web控件的自定义属性
Nov 25 Javascript
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
Mar 22 Javascript
jquery根据一个值来选中select下的option实例代码
Aug 29 Javascript
html判断当前页面是否在iframe中的实例
Nov 30 Javascript
Angular移动端页面input无法输入的解决方法
Nov 14 Javascript
解决Linux无法正常安装与卸载Node.js的方法
Jan 19 Javascript
原生js实现拖拽功能基本思路详解
Apr 18 Javascript
原生js 实现表单验证功能
Feb 08 Javascript
js实现简单图片拖拽效果
Feb 22 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创建基本身份认证站点的方法详解
2013/06/08 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
javascript事件问题
2009/09/05 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
Shell编程面试题
2016/05/29 面试题
季度思想汇报
2014/01/01 职场文书
自我鉴定怎么写
2014/01/12 职场文书
商场端午节活动方案
2014/01/29 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python