详解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 类方法定义还是有点区别
Apr 15 Javascript
不要使用jQuery触发原生事件的方法
Mar 03 Javascript
IE8中使用javascript动态加载CSS的解决方法
Jun 17 Javascript
javascript实现unicode与ASCII相互转换的方法
Dec 10 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
浅谈Node.js:Buffer模块
Dec 05 Javascript
js的三种继承方式详解
Jan 21 Javascript
Angular.js组件之input mask对input输入进行格式化详解
Jul 10 Javascript
layui select 禁止点击的实现方法
Sep 05 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 Javascript
浅谈TypeScript 索引签名的理解
Oct 16 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
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
javascript cookies操作集合
2010/04/12 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
Seajs的学习笔记
2014/03/04 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
Python类的动态修改的实例方法
2017/03/24 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
先进事迹报告会感言
2014/01/24 职场文书
矿泉水广告词
2014/03/20 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python