深入理解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中:input和input的区别分析
Jul 13 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
Dec 17 Javascript
node.js中Socket.IO的进阶使用技巧
Nov 04 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
Jun 05 Javascript
详解JavaScript中的4种类型识别方法
Sep 14 Javascript
javascript运算符——逻辑运算符全面解析
Jun 27 Javascript
Node.js学习入门
Jan 03 Javascript
JavaScript中的call和apply的用途以及区别
Jan 11 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
js分页之前端代码实现和请求处理
Aug 04 Javascript
React中嵌套组件与被嵌套组件的通信过程
Jul 11 Javascript
微信小程序(订阅消息)功能
Oct 25 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
一个域名查询的程序
2006/10/09 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
PHP 8新特性简介
2020/08/18 PHP
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
绝对经典成功的大学生推荐信
2013/11/08 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
维修工先进事迹
2014/05/29 职场文书
应届生求职信
2014/05/31 职场文书
2014年个人总结范文
2015/03/09 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL