详解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 相关文章推荐
动态表格Table类的实现
Aug 26 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
对xmlHttp对象方法和属性的理解
Jan 17 Javascript
js data日期初始化的5种方法
Dec 29 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
详解Javascript中DOM的范围
Feb 13 Javascript
表格展示利器 Bootstrap Table实例代码
Sep 06 Javascript
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
Vue循环组件加validate多表单验证的实例
Sep 18 Javascript
vue中使用v-model完成组件间的通信
Aug 22 Javascript
实现vuex与组件data之间的数据同步更新方式
Nov 12 Javascript
微信小程序开发打开另一个小程序的实现方法
May 17 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
js实现自动图片轮播代码
2017/03/22 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python图像常规操作
2017/11/11 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
python3 logging日志封装实例
2020/04/08 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
关于递归的一道.NET面试题
2013/05/12 面试题
教师节促销活动方案
2014/02/14 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
家具商场的活动方案
2014/08/16 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技