深入理解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 相关文章推荐
JavaScript 编程引入命名空间的方法与代码
Aug 13 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
Jan 27 Javascript
js图片延迟加载的实现方法及思路
Jul 22 Javascript
javascript相等运算符与等同运算符详细介绍
Nov 09 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
jQuery层级选择器用法分析
Feb 10 Javascript
编写高质量JavaScript代码的基本要点
Mar 02 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
Feb 09 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
Angular.JS中select下拉框设置value的方法
Jun 20 Javascript
原生js封装的ajax方法示例
Aug 02 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
Sep 12 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
第六节 访问属性和方法 [6]
2006/10/09 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
JS 常用校验函数
2009/03/26 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
在Django中创建第一个静态视图
2015/07/15 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
python实现简单五子棋游戏
2019/06/18 Python
python实现键盘输入的实操方法
2019/07/16 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
django下创建多个app并设置urls方法
2020/08/02 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
3.12植树节活动总结2014
2014/03/13 职场文书
四议两公开实施方案
2014/03/28 职场文书
服务口号大全
2014/06/11 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python