Weex线上踩坑实录,小白看完都学会了

2024-04-04 20:38 WEEX唯客
二维码

1.如何集成到fragment中


集成到fragment的情况还是很普遍的,因为现在很多app都是采用activity内嵌fragment的开发方式,把实际功能都放到fragment中。再比如在tab上一般是tablayout(bottomNavigationView)+fragment的布局,tab上内容也需要使用weex来开发。


在weex文档中只说明了怎么集成到activity中,网上也有很多人在问如何将weex集成到fragment。其实答案很简单,weex渲染出来的内容其实只是在一个控件中,所以只需要和普通的fragment开发一样,将weex sdk嵌入即可。根据weex官方描述,在回调IWXRenderListener的onViewCreated返回创建的view。所以我们只需要让fragment实现IWXRenderListener,然后在onViewCreated中将渲染出来的view添加到整个视图容器中即可。


最后提一点优化,**除了考虑到weex使用到fragment中,当然也要考虑到有些页面不是内嵌fragment的情况。**这里可以不用重新写一套weex sdk的集成,直接让activity使用已经集成了weex的fragment即可。


2.加载方式选择


在weex文档中提供了2种常用的加载js方式,本地加载和远程加载。笔者在weex开发者大会上问过手淘官方的人员,他们表示手淘首页入口9成都是weex的页面,并且这2中加载方式都有用到,根据实际业务团队自己来灵活选择。


我们是使用的打开app或者前后台切换时下载js,然后直接加载本地js的方式。该方式由于不用每次从网上下载,所以加载效率会高一些,但是也有缺点,就是每次线上发布以后需要一段时间用户才能下载到代码并生效,并不能及时的达到更新效果。


注意:不要采用在上一个页面点击时去判断本地js版本,然后下载运行的方式。该方式看起来很美好,又能实时更新效率又高,但是其实并不然。问题在于该方式需要去请求服务器获取js更新状态,万一网络差的时候就一直不会初始化容器,此时用户点击多次就会打开多个页面,非常的不友好,而且会给服务器带来无所谓的压力。


3.不同的业务模块中如何进行业务交互


weex和rn不一样,在rn中所有的业务默认都是放到一个模块中的,所以rn帮我们处理了通信这一块内容。但是weex不一样,weex中不同业务是不同的js文件,导致通信困难。


网上有说使用storage的方式,但是这个方式其实不太好,经过和前端协商,我们决定自己写一套业务模块中通信方式。我们自定义了一个仓库类,提供set方法保存业务模块通信中要传的值的key和value,前端调用set方法可以将值保存到客户端,然后加载B模块时由我们客户端将值给B模块,也就是通过fireGlobalEventCallback推送给前端使用。


4.如何构造一个前端调用体系


这里的前端调用体系是指在vue代码中调用到客户端的方法,包括自定义控件、客户端功能等。官方告诉我们是通过JScallback的方式,但是我们总不能在客户端写很多个方法一一对应吧,这里我们写的比较简单,让前端传入一个约定好的伪协议过来,其中包括需要调用的方法、传的参数等内容,接下来在客户端中解析该协议对应到实际的方法。当然这里其实可以考虑用设计模式优化一下,面向修改关闭,会更加符合solid原则。


5.关于网络框架、图片框架


weex的sample中是使用最简单的httpurlconnection来请求数据,但是这个是没有任何优化的基础访问。但是也提供给了我们自行修改的方式,那就是setHttpAdapter(),通过该方法可以使用适合自己公司的网络框架,比如OkHttp、Retrofit等等,weex官方也是建议修改一下网络框架,能够提高访问效率。


weex并没有提供图片加载的方式,用官方的解释来说就是大家的方式都不一样,加进去会让sdk很臃肿,而且不一定能符合各个公司的实际业务场景。所以weex官方只提供了一个setImageAdapter()来让我们自定义适合自己的图片框架,我们必须实现IWXImgLoaderAdapter,不然图片是没办法加载出来的。


注意:图片加载框架需要考虑到gif等其他格式,做好兼容性测试,我们当时ios就出现过问题。


6.关于降级措施


由于我们是使用先下载到本地,然后加载本地js的方式,所以不能避免的一个问题是在打开weex页面的时候实际的业务代码还没下载。针对这种情况,我们使用了降级策略,在打开weex页面之前首先判断一下本地是否有该业务代码,如果没有就打开入口上已配置的h5链接


自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。


深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

昵称:
内容:
验证码:
提交评论
评论一下