weex中使用全局路由守卫

       使用了weex有一定的时间了,可以说一路踩着无数的坑过来了。今天简单说一下weex里面如何做全局路由守卫。也就是说退出app之后,再次进入之后不用再次登录。

weex里面使用vue中的beforeEach()钩子函数?

       vue中的beforeEach函数:

router.beforeEach((to,from,next)=>{

})

       由于weex是基于vue的,原以为weex会支持vue这样的写法,但是一直出不来效果,苦苦思考得不到结果。在小伙伴的提示下,使用了简单的判断方法。代码如下,写在 entry.js(入口文件)中:

const storage = weex.requireModule('storage');
storage.getItem('PHONE', function (e) {
  if (e.result === 'success') {
      router.push('/home');
  } else {
      router.push('/login')
  }
});

       判断原则:获取任意一个用户登录信息,如果本地只要有这样的数据就说明已登录,直接跳到home页面;如果没有登录信息,则跳转到login页面进行登录。


以上编辑于20180920
更新编辑(20190311):

const storage = weex.requireModule('storage');
storage.getItem('PHONE', function (e) {
 if (e.result === 'success') {
     router.push('/home');
 } else {
     router.push('/login')
 }
});

修改为跳转到alarm,并且设定home下的重定向路由为alarm之后,时间一长第二次进入alarm数据渲染不出来,直接空白掉了。不清楚是不是和路由导航有关,还是重定向的问题。按道理是需要将数据存入内存里面,避免每次进入alarm每次请求接口,轮询到的新数据再更新到内存数据,不知道可行度怎么样。

const storage = weex.requireModule('storage');
storage.getItem('PHONE', function (e) {
 if (e.result === 'success') {
     router.push('/home/alarm');
 } else {
     router.push('/login')
 }
});

检测APP端的网络问题:没有网络时,APP有调用接口的地方直接render error -2013了,可以先判断一下网络问题,具体实现好像和原生有关系。

你可能感兴趣的:(前端项目)