Weex被阿里定義為“移動(dòng)端的高性能動(dòng)態(tài)化方案”虫腋,并稱之為“性能與動(dòng)態(tài)兼得”湘纵。聽上去似乎很玄乎镶蹋,那么Weex究竟如何凹联?且看下面的內(nèi)容沐兰。
移動(dòng)開發(fā):性能與動(dòng)態(tài)兼得
目前的移動(dòng)開發(fā)者面臨的最大痛點(diǎn)就是面對極其復(fù)雜的環(huán)境,對此蔽挠,莊卓然給出一個(gè)公式住闯,移動(dòng)開發(fā)的復(fù)雜度=應(yīng)用數(shù)量×平臺數(shù)量×要適配的各種各樣的機(jī)型。
如何解決這個(gè)問題呢象泵?在解決問題之前泌豆,首先要對移動(dòng)開發(fā)的未來有著精準(zhǔn)的研判炕桨。
阿里認(rèn)為土陪,移動(dòng)開發(fā)的未來必定更加平衡光坝,也就是說必須是性能與動(dòng)態(tài)兼得,如此忽孽,才能夠滿足未來用戶的需求绑改。另外谢床,移動(dòng)開發(fā)在未來也必定是開放互聯(lián)的狀態(tài),移動(dòng)互聯(lián)網(wǎng)將來肯定是基于更加大眾化的技術(shù)體系厘线,沒有平臺之間的隔閡识腿,而且簡單易用。
所以造壮,阿里結(jié)合移動(dòng)開發(fā)的現(xiàn)狀并圍繞其愿景推出了Weex解決方案渡讼。
事實(shí)上,在去年的雙11活動(dòng)中耳璧,Weex就得到了實(shí)戰(zhàn)的驗(yàn)證成箫,且表現(xiàn)不俗。時(shí)至今日旨枯,Weex已經(jīng)被阿里技術(shù)團(tuán)隊(duì)多次運(yùn)用蹬昌,并“創(chuàng)造”出各種豐富的場景,整體的表現(xiàn)非常優(yōu)異攀隔。
把移動(dòng)端所有界面拆分成各個(gè)page皂贩,然后中間設(shè)置有路由的控制邏輯,同時(shí)昆汹,將移動(dòng)端各種各樣的能力通過各種API提供給開發(fā)者明刷。這是阿里對移動(dòng)開發(fā)模型的理解。
Weex通過標(biāo)準(zhǔn)化的東西筹煮,包括HTML遮精、CSS和JS這些前端非常快速易用好學(xué)的語法作為開發(fā)體驗(yàn)败潦,提供給開發(fā)者。另外准脂,Weex的語法設(shè)計(jì)尊重還Web的標(biāo)準(zhǔn)劫扒。
Weex的性能、擴(kuò)展和兼容能力如何狸膏?
Weex設(shè)計(jì)之初就考慮到在三端(iOS沟饥、安卓和H5)上能夠得到展現(xiàn)。在最上面的DSL湾戳,阿里一般稱之為Weex文件(.we)贤旷,通過Transformer轉(zhuǎn)換成js-bundle,再部署到服務(wù)器砾脑,這樣服務(wù)端就完成了幼驶。在客戶端,第一層是JS-Framework韧衣,最后到RenderRengine盅藻。
Weex的性能辉懒、擴(kuò)展性以及可用性究竟怎樣呢匀归?
性能方面,阿里對Weex做了多次壓測耗帕。在加載時(shí)間穆端、幀率、內(nèi)存消耗仿便、CPU占用(包括靜默和峰值)等多個(gè)方面体啰,Weex都表現(xiàn)得非常出色。
在談及性能之時(shí)嗽仪,幀率和加載時(shí)間幾乎都會被提及荒勇,但是往往忽略了一個(gè)事實(shí),那就是Native UI開發(fā)中通常沒有JS資源在服務(wù)器端加載闻坚。Weex會把JS內(nèi)置到客戶端里沽翔,以免除下載的問題,從而更為有效地提升性能窿凤。
兼容性是Weex非常重視的問題仅偎,對此,阿里是這樣來解決的雳殊。
首先是單測保證橘沥,包括JS和H5的單測,保證最基礎(chǔ)的UT(Unit Test)本身所帶來的含義夯秃。
其次是UI的自動(dòng)化座咆,分為兩個(gè)部分,一是截圖對比仓洼,將最終產(chǎn)生的結(jié)果和意料中的結(jié)果進(jìn)行圖形對比介陶;二是Layout Results,包括Model以及其他的布局類的色建,通過基本的信息完成測試的過程哺呜。
在擴(kuò)展性方面,Weex可以寫很多頁面镀岛,而且通過路由機(jī)制幫助開發(fā)者將頁面進(jìn)行串聯(lián)弦牡。
Weex已開放內(nèi)測友驮,可用性方面正在逐步完善。包括Playground驾锰、調(diào)試工具卸留、腳手架、AppHub椭豫、編輯器等多個(gè)方面耻瑟,一些工作已經(jīng)完成就緒,絕大部分工作將在5赏酥、6月份完成喳整。
最后,是Weex的三種工作模式裸扶。
1.全頁模式
目前支持單頁使用或整個(gè)App使用Weex開發(fā)(還不完善框都,需要開發(fā)Router和生命周期管理),這是主推的模式呵晨,可以類比RN魏保。
2.Native Component模式
把Weex當(dāng)作一個(gè)iOS/Android組件來使用,類比ImageView摸屠。這類需求遍布手淘主鏈路谓罗,如首頁、主搜結(jié)果季二、交易組件化等檩咱,這類Native頁面主體已經(jīng)很穩(wěn)定,但是局部動(dòng)態(tài)化需求旺盛導(dǎo)致頻繁發(fā)版胯舷,解決這類問題也是Weex的重點(diǎn)刻蚯。
3.H5 Component模式
在H5種使用Weex,類比WVC需纳。一些較復(fù)雜或特殊的H5頁面短期內(nèi)無法完全轉(zhuǎn)為Weex全頁模式(或RN)芦倒,比如互動(dòng)類頁面、一些復(fù)雜頻道頁等不翩。這個(gè)痛點(diǎn)的解決辦法是:在現(xiàn)有的H5頁面上做微調(diào),引入Native解決長列表內(nèi)存暴增麻裳、滾動(dòng)不流暢口蝠、動(dòng)畫/手勢體驗(yàn)差等問題。
另外津坑,WVC將會融入到Weex中妙蔗,成為Weex的H5 Components模式。