深入理解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 相关文章推荐
驱动事件的addEvent.js代码
Mar 27 Javascript
百度留言本js 大家可以参考下
Oct 13 Javascript
初窥JQuery(一)jquery选择符 必备知识点
Nov 25 Javascript
写自已的js类库需要的核心代码
Jul 16 Javascript
JS 实现导航栏悬停效果
Sep 23 Javascript
JS实现清除指定cookies的方法
Sep 20 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
js使用html2canvas实现屏幕截取的示例代码
Aug 28 Javascript
微信小程序promsie.all和promise顺序执行
Oct 27 Javascript
vue-router beforeEach跳转路由验证用户登录状态
Dec 26 Javascript
初学vue出现空格警告的原因及其解决方案
Oct 31 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 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 中的str_replace 函数总结
2007/04/27 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
nginx下安装php7+php5
2016/07/31 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
双击滚屏-常用推荐
2006/11/29 Javascript
非常漂亮的JS代码经典广告
2007/10/21 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
python自动化报告的输出用例详解
2018/05/30 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
保健品市场营销方案
2014/03/31 职场文书
建筑学专业自荐书
2014/07/09 职场文书
简易离婚协议书范本
2014/10/24 职场文书
模范教师材料大全
2014/12/16 职场文书
小学少先队活动总结
2015/05/08 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers