深入理解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拖拽并简单保存的实现代码
Nov 28 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
Jun 08 Javascript
AngularJS实现全选反选功能
Dec 08 Javascript
基于Bootstrap重置输入框内容按钮插件
May 12 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
微信小程序 icon组件详细及实例代码
Oct 25 Javascript
浅谈webpack 自动刷新与解析
Apr 09 Javascript
Element-ui tree组件自定义节点使用方法代码详解
Sep 17 Javascript
JavaScript JMap类定义与使用方法示例
Jan 22 Javascript
深入了解js原型模式
May 30 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
Aug 28 Javascript
TS 类型收窄教程示例详解
Sep 23 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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
jquery validate demo 基础
2015/10/29 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
python实现堆栈与队列的方法
2015/01/15 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
亚马逊印度站:Amazon.in
2017/10/15 全球购物
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
村捐赠仪式答谢词
2014/01/21 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
vue中 this.$set的使用详解
2021/11/17 Vue.js