官术网_书友最值得收藏!

面試技巧13 React Native和Weex重要嗎?

在傳統開發中,當需要開發一款App的時候,往往需要在各個平臺上,例如安卓平臺、iOS平臺和Web平臺,都開發一款對應的App,我們將其稱這為“原生開發”。“原生開發”會給開發帶來許多的問題,首先是開發人員增多和開發成本增加的問題,每個平臺都需要有一名開發人員,而每增加一名開發人員就提高了開發成本;其次是還要保證不同平臺之間功能的一致性,這也給測試人員也帶來了更多工作量;而最大的問題在于“原生開發”的周期長、復雜度高,這往往會造成產品難以在預期時間內完成。為了解決這種高成本的“原生開發”問題,兩種代替原生開發的新技術誕生了——React Native和Weex。

什么是React Native開發?

React Native是Facebook在2015年3月開源的一個跨平臺UI框架,其理念是既擁有“原生開發”的用戶體驗,又保留React(React是Facebook 2013年開源的Web開發框架)的開發效率,這無疑擊中了業界的痛點。它的設計者Occhino不強求寫一份React Native代碼來同時支持多個應用平臺,而是希望在不同的平臺上通過編寫React Native代碼來支持各個平臺,因此他提出了“Learn once,write anywhere”口號,并沒有像Java設計的那樣“wirte once,run anywhere”。React Native底層的實現其實依賴于Javascript,通過Javascript引擎來調用原生代碼,從而實現頁面的渲染和數據的綁定。React Native不僅解決了跨平臺問題,還解決了客戶端動態更新困難的問題。React Natice使用熱更新方式來做到動態更新應用,解決了客戶端更新麻煩的問題,特別是iOS端,每次更新都需要重新發布一個版本。React Native通過將基礎模塊和業務模塊一起打包成一個JS Bundle(JavaScript資源包),然后將這個JS Bundle放到服務器上,客戶端通過下載服務器上的JS Bundle來實現更新,避免了重新發布應用。在業務頻繁變化的情況下,動態更新就變得非常有用。圖1是React Native的設計框架。

圖1 React Native的設計框架

什么是Weex開發?

Weex是阿里巴巴在2016年6月開源的一種用于構建跨平臺應用的UI框架,其設計理念是希望客戶端在具備動態發布能力的同時又不失良好的性能和用戶體驗。區別于React Native,為了徹底解決平臺多樣性帶來的問題,Weex大膽地提出了“write once,run everywhere”的口號,即寫一份Weex代碼可以在不同的平臺上運行,它比React Native做得更徹底,更具革命性。Weex又被稱為Vue Native,原因在于Weex是基于Vue來編寫的,Vue是目前非常火的前端框架,它比React要簡單、易用。Vue使得Weex的開發也更加簡單,讓更多的人能夠快速上手,這也更迎合大眾的口味。Weex也是通過Javascript引擎來調用原生代碼實現頁面的渲染和數據的綁定。和React Native一樣,Weex也是將代碼打包成JS Bundle放到服務器上,客戶端從服務器上下載JS Bundle來實現動態更新。不同的是Weex只打包業務模塊,基礎模塊則留在了客戶端的Weex SDK中,因此打包后的JS Bundle體積非常小,更加便于更新。圖2是Weex的框架圖。

圖2 Weex框架圖

React Native和Weex如何選擇?

React Native和Weex的相同之處是都是基于Javascript渲染的,而React Native選擇使用React編寫前端界面,Weex使用Vue編寫前端界面。React Native和Weex都能實現跨平臺開發應用,從性能上來看,兩者幾乎一樣,因為都是通過Javascript調用原生的代碼實現頁面渲染,而Weex比React Native更加容易學習和使用,編寫一份代碼即可在多個平臺上運行,還能夠實現增量更新,這些是Weex的優勢;而React Native的優勢在于擁有更活躍的開源社區,版本迭代更快,遇到的問題能夠更快得到解決。React Native和Weex的共同的缺點是對原生組件的支持不夠完善,許多原生組件的功能無法使用;自定義能力差,例如,很難實現自定義跳轉效果;很難同時良好地支持各個平臺,兼容性不夠好;用戶體驗不夠友好等。至于選擇哪個框架或方案更好,這個很難說,因為這兩個框架都還有很大的提升空間,我相信這種技術會是未來App開發的一個重要方向。沒有最好的選擇,只有更適合的選擇,選擇符合當前業務的方案才是最好的選擇。

主站蜘蛛池模板: 郴州市| 商城县| 乐安县| 玛纳斯县| 朝阳区| 安新县| 河间市| 河津市| 德兴市| 微博| 广宁县| 兴业县| 马鞍山市| 富川| 霍城县| 阿克陶县| 崇州市| 衡东县| 新绛县| 甘肃省| 西峡县| 曲沃县| 雷山县| 南召县| 新宁县| 昌图县| 张掖市| 永善县| 恩平市| 达拉特旗| 揭东县| 小金县| 囊谦县| 博湖县| 阿拉善盟| 平果县| 蒲江县| 普安县| 罗平县| 合阳县| 长岛县|