详解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 相关文章推荐
关于javascript document.createDocumentFragment()
Apr 04 Javascript
jquery 简单图片导航插件jquery.imgNav.js
Mar 17 Javascript
jQuery级联操作绑定事件实例
Sep 02 Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 Javascript
JavaScript中的定时器之Item23的合理使用
Oct 30 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
Nov 13 Javascript
全面解析Bootstrap中transition、affix的使用方法
May 30 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
JS如何设置元素样式的方法示例
Aug 28 Javascript
javascript中关于类型判断的一些疑惑小结
Oct 14 Javascript
在小程序中推送模板消息的实现方法
Jul 22 Javascript
javascript实现点击产生随机图形
Jan 25 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
非常不错的MySQL优化的8条经验
2008/03/24 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
使用URL传输SESSION信息
2015/07/14 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
材料加工硕士生求职信
2013/10/10 职场文书
自强之星事迹材料
2014/05/12 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
学校团代会开幕词
2016/03/04 职场文书
python 中yaml文件用法大全
2021/07/04 Python