深入理解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 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
Oct 11 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
Dec 28 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
微信小程序之picker日期和时间选择器
Feb 09 Javascript
H5上传本地图片并预览功能
May 08 Javascript
JavaScript学习笔记之图片库案例分析
Jan 08 Javascript
Angular8基础应用之表单及其验证
Aug 11 Javascript
深入理解令牌认证机制(token)
Aug 22 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
在vue-cli创建的项目中使用sass操作
Aug 10 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 年龄计算函数(精确到天)
2012/06/07 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
php实现微信扫码支付
2017/03/26 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
修改发贴的编辑功能
2007/03/07 Javascript
js同时按下两个方向键
2007/12/01 Javascript
js每次Title显示不同的名言
2008/09/25 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
教你安装python Django(图文)
2013/11/04 Python
python使用心得之获得github代码库列表
2014/06/25 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
python妹子图简单爬虫实例
2015/07/07 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
python实现人机五子棋
2020/03/25 Python
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
《自然之道》教学反思
2014/02/11 职场文书
遗愿清单观后感
2015/06/09 职场文书
经典祝酒词大全
2015/08/12 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang