参照WeexSDK里的WXBaseViewController里的在控制器的viewDidAppear
里发送了一个appear
的事件通知,然后js里监听此通知就能知道js页面将要出现了,以便在页面出现时刷新一些数据,不管是push
还是pop
,但是在最近的一个生产问题是:wifi
情况下页面请求正常,而在弱网情况下,js页面不会有响应,哪里是什么超时啊,也不会走,这些请求是放在了appear
这个监听里,但是把这些请求直接写在created
里就能正常,一直想了很久,最后定位到是原生发通知时,js页面还没有开始监听,所以把js监听appear
通知的监听放在了weex页面最靠前的一个方法[beforeCreate]
里
可惜在弱网情况下还是不行。
后面发现,是加载js页面时没有加载本地的,而是直接加载服务器上的js页面。
所以就是在加载这个js页面时太慢,而原生已经发送了通知。
于是解决加载本地js的问题,后发现是多级文件夹所导致。因为之前设计这一套流程时,没有考虑多级文件夹,而安卓是正常的,因为安卓在加载本地js文件时,是跟根据js页面名去递归遍历查找文件,而我设计时,觉得递归查找太费时间 ,就直接用第一级文件夹名拼接好js页面名,所以导致放在第一级的页面是正常的,而放在二级三级的在弱网情况下就不正常了,而随着项目
Weex化
越来越多分文件夹管理也是相当必要的,所以后面处理了下,就正常了。还有就是之前没有考虑到在没有网络的情况下启动app访问weex页面,导致是一片空白。也优化了下:在下载json文件失败后,尝试查找本地json文件,尝试读取zip包,尝试读取解压后的文件夹,修复后断网启动app也能进入weex页面了,当然也还是有很多场景ifelse需要去考虑和兼容的,小记一下。还有就是在本地调试时,json文件是没有必要的,render时也得处理优化下
网友评论