情景
最近在做vue项目碰到这么一个需求,我需要在初始化的时候在全局请求一个值,拿到此值后,里面具体的页面的在初始化的时候都需要用到这个值。
自己想到的解决方案
- 全局路由beforeEach做拦截
- 具体页面尾递归查询拦截
- 拿到值后页面reload
- 入口文件拦截初始化
优劣
-
优点: 全局路由导航首卫拦截最方便,也充分利用了vue-router带来的便利。
缺点: 本质只需项目初始化时加载,有点浪费的感觉。
-
优点: 具体页面尾递归查询拦截,可以做到具体对待,最简单也最直接。
缺点: 页面太多,需要每个页面去添加,并且有爆栈的可能。
-
优点: 拿到值后页面reload,纯属投机取巧。
缺点: 页面会闪一下,体验不好。
-
优点: 入口文件拦截初始化,主要是判断是否拿到该值,拿到后在进行vue的初始化(new Vue),否则处于等待。
缺点: 没拿到值之前,页面一片空白,等待时间长时体验差。
总结
全局路由导航首位beforeEach相比较之下最好,入口文件初始化拦截其次,剩下两个不推荐。