WOT張興業(yè):Weex技術(shù)在魅族小應(yīng)用中的實踐
原創(chuàng)【51CTO.com原創(chuàng)稿件】七年一劍,華麗蛻變。自2012年起連續(xù)6年15場峰會,凝聚大量技術(shù)專家,博觀而約取,厚積而薄發(fā)。2018WOT全球軟件與運維技術(shù)峰會揚帆起航,圍繞12大核心熱點,匯聚海內(nèi)外60位一線專家,打造高端技術(shù)盛宴!
在 “前端工程實踐”分論壇現(xiàn)場中,魅族高級工程師張興業(yè)將給聽眾帶來一場名為《Weex技術(shù)在魅族小應(yīng)用中的實踐》的主題演講。在會前,51CTO記者采訪到了他,請他提前“劇透”,精彩演講內(nèi)容就讓我們“先睹為快”吧!
【講師簡介】
張興業(yè)主要從事應(yīng)用技術(shù)支持工作,包括Android基礎(chǔ)技術(shù)研究、Web相關(guān)技術(shù)在應(yīng)用中的使用和優(yōu)化等?,F(xiàn)主要關(guān)注移動端動態(tài)化技術(shù)應(yīng)用和優(yōu)化以及AI技術(shù)在移動端的使用。
張興業(yè)表示,微信小程序的發(fā)布給移動前端開發(fā)帶來了新的思路。一直以來,魅族也在思考能不能根據(jù)自己的業(yè)務(wù)創(chuàng)造一套適合自己的小程序方案,升級現(xiàn)有的動態(tài)化方案。也正是基于這種思考,同時結(jié)合Flyme 系統(tǒng)中有很多應(yīng)用有著重運營屬性,魅族基于Weex技術(shù)實現(xiàn)了自己的小程序方案。
魅族為何選擇利用Weex技術(shù)來開發(fā)小應(yīng)用?
張興業(yè)坦言,魅族內(nèi)部一直在探索應(yīng)用的動態(tài)化方案,包括:webapp、Hybrid、json2view等等。在2016年以前,魅做的更多的是Hybrid、json2view方面的,尤其是json2view,因為系統(tǒng)應(yīng)用對性能的要求很高,而且也有動態(tài)化的需求,有些view就通過服務(wù)端下發(fā)json的方式,客戶端解析json數(shù)據(jù)渲染出UI或者動畫,比如魅族的ActionView(動視系統(tǒng))就是采用了json2view的方案。
2016年,魅族開發(fā)團隊注意到了ReactNative和Weex,當時團隊對vuejs比較熟悉,所以比較傾向于使用weex,同時通過對ReactNative和Weex在基礎(chǔ)組件和性能的對比發(fā)現(xiàn),基礎(chǔ)組件沒有差距,而且自己也能擴展,性能方面也與ReactNative不相上下,所以最終選擇了weex。
張興業(yè)向記者介紹說,Weex是阿里2016年底開源的移動端動態(tài)化解決方案。它能夠***兼顧性能與動態(tài)性,讓移動開發(fā)者通過簡捷的前端語法寫出Native級別的性能體驗,并支持iOS、安卓、YunOS及Web等多端部署。對于移動開發(fā)者來說,Weex幫助他們解決了頻繁發(fā)版和多端研發(fā)兩大痛點,同時解決了前端語言性能差和顯示效果受限的問題。
張興業(yè)表示,在魅族小應(yīng)用的開發(fā)流程和Weex的開發(fā)流程是一樣的,魅族小應(yīng)用的渲染框架用的weex,在此基礎(chǔ)上開發(fā)時團隊新增了很多魅族特有的接口和組件,并對自己提供的接口和組件撰寫了詳細的使用文檔,用于內(nèi)部使用方便交流。
目前,在魅族的很多小應(yīng)用采用了Weex方案,例如用戶反饋、國際流量、個人主頁、評論中心等等,已覆蓋了魅族三分之二以上的用戶。
怎樣保證小應(yīng)用的性能和穩(wěn)定性?
一個受歡迎的程序必然離不開高性能和高穩(wěn)定性,那么,怎樣做才能保證小應(yīng)用的性能和穩(wěn)定性?對此,張興業(yè)認為,整個程序的高穩(wěn)定性和高性能離不開前后端的支持,包括渲染層的優(yōu)化。
在穩(wěn)定性和性能方面,魅族小應(yīng)用采用了魅族移動端的穩(wěn)定性標準和性能標準,測試團隊會對每個小程序進行穩(wěn)定性、CPU、內(nèi)存、流量、電量以及安全等專項測試。同時,開發(fā)團隊采用Weex方案,用前端的方式開發(fā)部署程序,最終在移動端渲染成原生的方式,并在網(wǎng)絡(luò)、渲染、緩存等方面做了優(yōu)化。
我們知道,在應(yīng)用性能方面,注重的是快和流暢,是怎樣在最短的時間展現(xiàn)在用戶面前,并有最流暢的感知。一個程序展現(xiàn)在用戶面前,主要的時間花在了網(wǎng)絡(luò)下載和UI渲染方面。在網(wǎng)絡(luò)方面,魅族開發(fā)團隊使用了GSLB(Global Server Load Balance)和CDN支持;在UI渲染方面,在weex原有基礎(chǔ)上,對復雜控件做了調(diào)整,尤其是長列表的支持。在使用Listview,長列表出現(xiàn)了內(nèi)存漲滿的情況,經(jīng)分析發(fā)現(xiàn)cell是可以重復利用的,但是數(shù)據(jù)量很大時,dom的量會很大,占用了很多的內(nèi)存。dom的數(shù)據(jù)結(jié)構(gòu)要比json數(shù)據(jù)復雜的多,需要更多的存儲空間。如果list的數(shù)量是可控的,通過優(yōu)化cell可以解決這個問題。但是對于list的Item數(shù)量不確定的情況,優(yōu)化cell也不能解決這個問題。最終,開發(fā)團隊選擇通過提供cell模板的方式,讓list支持的Item數(shù)量盡量多。
采訪***,張興業(yè)建議,在小程序開發(fā)過程中,開發(fā)團隊要精通小程序開發(fā)的相關(guān)語言,熟讀開發(fā)文檔,要有前端基礎(chǔ),熟悉VueJS,還要多看weex的開發(fā)文檔。雖然Weex前端開發(fā)也是用的vuejs框架,但也只是一個子集。所以有很多組件或者屬性還不支持,用以前的前端經(jīng)驗去做,實現(xiàn)的效果反而不好。
5 月 18 - 19日,北京•粵財JW萬豪酒店,全球最值得關(guān)注的IT技術(shù)盛宴與您不見不散。2018WOT全球軟件與運維技術(shù)峰會一定是您發(fā)現(xiàn)全新思路、挖掘***思想、拓展人脈的重要平臺。
目前我們的各項票種已全面發(fā)售。需要提醒您的是,購票越早,折扣越大!與KOL零距離交流,呈現(xiàn)不一樣的“英雄盛宴”!
點擊官網(wǎng)了解詳情:wot.51cto.com
7折預售中,搶票從速。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】