详解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 使用手册(六)
Sep 23 Javascript
一个JS的日期格式化算法示例
Jul 31 Javascript
jQuery+json实现的简易Ajax调用实例
Dec 14 Javascript
浅析Javascript ES6新增值比较函数Object.is
Aug 24 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
Feb 22 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
Sep 05 Javascript
vuejs router history 配置到iis的方法
Sep 20 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
Dec 03 Javascript
详解vue几种主动刷新的方法总结
Feb 19 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
Nov 03 Javascript
Webpack3+React16代码分割的实现
Mar 03 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 array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
js select常用操作控制代码
2010/03/16 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
Python3基础之list列表实例解析
2014/08/13 Python
在Django中创建动态视图的教程
2015/07/15 Python
对Python中的@classmethod用法详解
2018/04/21 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
使用python实现名片管理系统
2020/06/18 Python
如何把python项目部署到linux服务器
2020/08/26 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
端午节演讲稿
2014/05/23 职场文书
消防安全宣传口号
2014/06/10 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python