背景
支持app混合開發(fā)魔招,由最初的原生+web,轉(zhuǎn)成原生+(weex办斑,RN,web鳞疲,flutter等),優(yōu)點是app可以不用更新建丧,就能上線一些新功能。缺點主要是體驗問題橄维,目前weex拴曲,RN,web澈灼,flutter都不能達(dá)到原生頁面的體驗效果。
接入
官方文檔:https://weex.apache.org/zh/guide/introduction.html
注意點
1叁熔、項目ndk abiFilters的配置,注意之前項目有配置適配哪些cpu類型遭贸,一般配置armeabi-v7a即可心软。如果需要模擬器運行,需在配置x86删铃,一般sdk初始化都是這個問題。
2咒劲、weex圖片加載诫隅,里面有很多坑。原生需要實現(xiàn)IWXImgLoaderAdapter接口阎肝,并在初始化weex配置肮街,目前項目使用的是glide圖片加載,出現(xiàn)過圖片拉伸沛硅,加載不全,模糊摇肌,等各種問題,建議盡量不要使用placeholder昵骤,DrawableTransitionOptions.withCrossFade肯适。weex js端注意image標(biāo)簽resize屬性設(shè)置。weex js端的所有圖片加載都是走原生的實現(xiàn)類加載框舔。
3、weex的網(wǎng)絡(luò)請求樱溉,需要原生實現(xiàn)IWXHttpAdapter接口纬凤,所有的js的網(wǎng)絡(luò)請求都是走原生的實現(xiàn)類去網(wǎng)絡(luò)請求福贞,可以配置網(wǎng)絡(luò)請求超時時間移斩,以及要處理cookie問題。以及http狀態(tài)碼的初步處理
4肠套、自定義插件:原生繼承WXModule猖任,通過WXSDKEngine.registerModule(moduleName, moduleClass),自定義WXModule中方法為public刁赖,并添加注解@JSMethod长搀,可指定方法執(zhí)行在UI線程或者子線程宇弛,默認(rèn)為UI線程源请。方法入?yún)榫唧w根據(jù)插件功能自己定義彻况,回調(diào)通過JSCallback.invokeAndKeepAlive或者JSCallback.invoke回調(diào)數(shù)據(jù)舅踪。兩者區(qū)別為invoke為WXModule方法調(diào)一次就有一次回調(diào),invokeAndKeepAlive則更像原生的listener悍赢,設(shè)置回調(diào)之后货徙,不用每次調(diào)用方法,只需要有觸發(fā)就有回調(diào)破婆,相當(dāng)于事件綁定的一個持續(xù)回調(diào)祷舀。
5瀑梗、自定義js標(biāo)簽:原生繼承WXComponent裳扯,實現(xiàn)自定義view。weex默認(rèn)提供的text image標(biāo)簽是同樣的原理亿鲜,只不過是weex原生sdk已經(jīng)默認(rèn)實現(xiàn)了冤吨。通過@WXComponentProp注釋方法自定義屬性,可獲取js標(biāo)簽的屬性值漩蟆,@JSMethod自定義方法。WXSDKEngine.registerComponent注冊自定義組件
6圾叼、weex頁面渲染:實現(xiàn)IWXRenderListener捺癞,可加載本地js文件,以及js鏈接髓介。會出現(xiàn)不觸發(fā)onRenderSuccess回調(diào)的情況,如果在加載js時有l(wèi)oading呜笑,需要注意
7、注意處理加載js異常叫胁,onException處理
8汞幢、如果有需要做js本地緩存,這樣加載過的js頁面输钩,即使沒有網(wǎng)絡(luò)也可以打開仲智。具體看業(yè)務(wù)需求