深入理解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 相关文章推荐
固定网页背景图同时保持图片比例的思路代码
Aug 15 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
express的中间件basicAuth详解
Dec 04 Javascript
node.js调用C++开发的模块实例
Jul 03 Javascript
jquery判断输入密码两次是否相等
Apr 22 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
浅谈 Vue 项目优化的方法
Dec 16 Javascript
vue将对象新增的属性添加到检测序列的方法
Feb 24 Javascript
基于 D3.js 绘制动态进度条的实例详解
Feb 26 Javascript
浅谈vue项目打包优化策略
Sep 29 Javascript
微信小程序如何利用getCurrentPages进行页面传值
Jul 01 Javascript
js最全的数组的降维5种办法(小结)
Apr 28 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
图解上海144收音机
2021/03/02 无线电
PHP防止注入攻击实例分析
2014/11/03 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
高三历史教学反思
2014/01/09 职场文书
高中美术教学反思
2014/01/19 职场文书
中年人生感言
2014/02/04 职场文书
庆七一活动总结
2014/08/27 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
青岛导游词
2015/02/12 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
python 解决微分方程的操作(数值解法)
2021/05/26 Python
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js