详解vue-router 路由元信息


Posted in Javascript onSeptember 13, 2017

一、背景

之前写前端都是后端返回界面,跳转神马的完全不用自己操心,但是这次用 vue 写的前端,第一次前后端分离,后端只给前端提供数据接口,一开始还想着是后端控制界面的渲染神马的,但是后面一想,路由神马的都是前端控制的,后端的手伸不过来啊,于是乎就一直在逛 vue-router 的官网,想着应该会有相关的东西,然后发现了路由元信息,起初怎么也没看懂是什么意思,后面慢慢琢磨明白了,记录一下

二、代码分析

官网路由元信息

(1)路由定义

const router = new VueRouter({
 routes: [
  {
   path: '/foo',
   component: Foo,
   meta: { requiresAuth: true }// a meta field
  }
 ]
})

 这里的 meta 字段就是路由元信息字段,requiresAuth 是自己起的字段名称,用来标记这个路由信息是否需要检测,true 表示要检测,false 表示不需要检测(这个名称随便起,比如我自己的就起的 requiresId,或者你懒得想,就直接 a ,b 这么起,当然,还是比较建议起个有意义的名称)

(2)js 代码

new Vue({
 el: '#app',
 router,
 template: '<App/>',
 components: { App },
 render: h => h(App),
 created () {
  this.redrct()
 },
 methods: {
  redrct () {
   router.beforeEach((to, from, next) => {
    if (to.matched.some(record => record.meta.requiresId)) { //这里meta字段的名称要与上面route里面保持一致
     // this route requires Id, check if logged in
     // if not, redirect to login page.
     if (!this.loggedIn()) { // 自己的判断条件
      next({
       path: '/', // 重定向后的路由
       query: { redirect: to.fullPath } // 登录成功之后可以根据query中的内容跳转回原来的路由(页面)
      })
     } else {
      next()
     }
    } else {
     next() // 确保一定要调用 next()
    }
   })
  },
  loggedIn () {
   var id = sessionStorage.getItem('userId')
   if (id === null) { // 未登录
    return false
   }
   return true // 别忘了这句啊,之前忘写了,调了好半天呢
  }
 }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
JavaScript 32位整型无符号操作示例
Dec 08 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
Mar 12 Javascript
Bootstrap自定义文件上传下载样式
May 26 Javascript
ES6新特性之模块Module用法详解
Apr 01 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
May 19 Javascript
vue复合组件实现注册表单功能
Nov 06 Javascript
Vue SPA单页应用首屏优化实践
Jun 28 Javascript
实例分析vue循环列表动态数据的处理方法
Sep 28 Javascript
详解ES6 Promise对象then方法链式调用
Oct 20 Javascript
js实现车辆管理系统
Aug 26 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
Sep 13 #Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 #Javascript
Vue-Router进阶之滚动行为详解
Sep 13 #Javascript
Vue 滚动行为的具体使用方法
Sep 13 #Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 #Javascript
VUE实现一个分页组件的示例
Sep 13 #Javascript
jquery 键盘事件的使用方法详解
Sep 13 #jQuery
You might like
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Python中设置变量访问权限的方法
2015/04/27 Python
python安装oracle扩展及数据库连接方法
2017/02/21 Python
python PyTorch预训练示例
2018/02/11 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
高中教师评语大全
2014/04/25 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js