详解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继承方式实例
Oct 29 Javascript
你必须知道的Javascript知识点之&quot;this指针&quot;的应用
Apr 23 Javascript
鼠标滑在标题上显示图片的JS代码
Nov 19 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
Dec 30 Javascript
jquery实现图片左右切换的方法
May 07 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
Vue.js用法详解
Nov 13 Javascript
Vue+mui实现图片的本地缓存示例代码
May 24 Javascript
Vue路由history模式解决404问题的几种方法
Sep 29 Javascript
详解js常用分割取字符串的方法
May 15 Javascript
Layui给switch添加响应事件的例子
Sep 03 Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 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
thinkphp实现like模糊查询实例
2014/10/29 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
python类定义的讲解
2013/11/01 Python
基于python编写的微博应用
2014/10/17 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
python如何基于redis实现ip代理池
2020/01/17 Python
通过Python实现一个简单的html页面
2020/05/16 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
高中生学习总结的自我评价范文
2013/10/13 职场文书
2014年五一劳动节社区活动总结
2014/04/14 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
初中作文评语
2014/12/25 职场文书
学前班学生评语
2014/12/29 职场文书
红白喜事主持词
2015/07/06 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python