v3
模式加速了首页nvue
的启动速度,当在首页nvue
中访问getApp
不一定可以获取真正的App
对象
现在问题来了:
nvue
页面,全局js
变量不能保持状态;nvue
页面,store
在工具类js
中使用无法保持与同步状态;nvue
页面,getApp
不一定在首页获取得到;
那我现在存储了 一个 token
在 storage
中,这个 token
,我会用在工具类 js
中,比如封装的 request
。
最开始我们只需要从storage
中取一次,然后放入全局js
中,或者存入 store
,并保持更新就可以。
后来 nvue
下,工具类 js
无法保持 store
状态的同步,全局js
也是孤立的,然后换成了 getApp
,把取出来的 token
放入了globalData
。工具类 js
可以通过 getApp
来获取 globalData
。
现在 getApp
不一定有效,这种情况,token
就要 变成每一次都要从 storage
中取。每一次判断 getApp
是不是 有效,有效就存 token
,然后从 getApp
里面取,不有效,继续从 storage
中取。
一般使用getApp
,基本上就是为了弥补store
在工具类的js
无法使用的问题,而且基本上首页就会直接使用。最常见的就是从 storage
中取值,放入 globalData
,接下来再继续进行一些操作,这些操作一般会根据获取出来的值而做不同的响应。
对于一些开局不需要依赖用户状态检测的应用来说,的确可以更快进入首页。可是对于根据上一次的状态来做判断的来说,这个状态值每次都要从storage
中来取,storage
又给人感觉用了会奔溃的感觉,每次都要维护 try/catch
。
不知道对于想在第一页就获取到 getApp
的有没有什么 确保 能够拿到 getApp
的办法。
语文数学天才 (作者)
暂时裸奔中,不太想改代码。
2019-12-07 11:05
GUNDAM
回复 语文数学天才: 兄弟 解决的话 告知下 这次官方v3 为了加快首页打开速度 有点为难开发者了
2019-12-08 10:58
语文数学天才 (作者)
回复 GUNDAM: https://github.com/dcloudio/uni-app/issues/1091https://github.com/dcloudio/uni-app/issues/1091
2019-12-10 15:04
GUNDAM
回复 语文数学天才: v3正式版 hbuilderx2.5.1 好像不用改过去代码 也能运行 不知是否官方内部处理了全局变量挂载逻辑
2020-01-06 15:43