详解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 相关文章推荐
JQuery中使用Ajax赋值给全局变量异常的解决方法
Jan 10 Javascript
JQuery教学之性能优化
May 14 Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 Javascript
学习JavaScript设计模式之状态模式
Jan 08 Javascript
JS 获取HTML标签内的子节点的方法
Sep 21 Javascript
JavaScript实现的商品抢购倒计时功能示例
Apr 17 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
Nov 09 jQuery
微信小程序开发之路由切换页面重定向问题
Sep 18 Javascript
vue实现图片懒加载的方法分析
Feb 05 Javascript
Js利用正则表达式去除字符串的中括号
Nov 23 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
用ODBC的分页显示
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
Python ftp上传文件
2016/02/13 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
Pycharm更换python解释器的方法
2018/10/29 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
J2EE面试题
2016/03/14 面试题
学生会干部自荐信
2014/02/04 职场文书
防沙治沙典型材料
2014/05/07 职场文书
项目经理任命书
2014/06/04 职场文书
公务员培的训心得体会
2014/09/01 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python
改造DE1103三步曲
2022/04/07 无线电
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL