详解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判断两种格式的输入日期的正确性的代码
Mar 25 Javascript
IE和FireFox(FF)中js和css的不同
Apr 13 Javascript
function foo的原型与prototype属性解惑
Nov 19 Javascript
JavaScript性能陷阱小结(附实例说明)
Dec 28 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
Mar 12 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
JavaScript禁止微信浏览器下拉回弹效果
May 16 Javascript
Vue-Cli中自定义过滤器的实现代码
Aug 12 Javascript
详解vue axios中文文档
Sep 12 Javascript
基于Require.js使用方法(总结)
Oct 26 Javascript
vue开发中遇到的问题总结
Apr 07 Javascript
小程序选项卡以及swiper套用(跨页面)
Jun 19 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根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
Vue渲染函数详解
2017/09/15 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
Python基于pillow判断图片完整性的方法
2016/09/18 Python
Python for循环与range函数的使用详解
2019/03/23 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
Shell如何接收变量输入
2012/09/24 面试题
Python面试题集
2012/03/08 面试题
简历自我评价怎么写呢?
2014/01/06 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
表扬稿格式范文
2015/01/16 职场文书
房产遗嘱范本
2015/08/06 职场文书