現(xiàn)階段,在移動開發(fā)中,原生(Native)雖然開發(fā)成本很高,但是仍然是必須的,因為Web App的用戶體驗仍無法超越原生;
原生(Native)APP開發(fā)的優(yōu)勢:
- Native的原生控件有更好的體驗听绳;
- Native有更好的手勢識別失暴;
- Native有更合適的線程模型军浆,盡管Web Worker可以解決一部分問題棕洋,但如圖像解碼、文本渲染仍無法多線程渲染乒融,這影響了Web的流暢性.
一: 什么是React Native?
React Native是Facebook在F8大會開源的JavaScript框架,(2015年9月15日發(fā)布)可以讓廣大開發(fā)者使用JavaScript和React開發(fā)跨平臺的移動應(yīng)用.在短短不到一年的時間里,它成為手機(jī)端必不可少的開發(fā)模式之一掰盘。 它充分利用了Facebook現(xiàn)有的業(yè)務(wù)輪子, 其核心設(shè)計理念:既擁有Native的用戶體驗摄悯、又保留React的開發(fā)效率,目前,React Native基本完成了對多端的支持愧捕,實現(xiàn)了真正意義上的面向配置開發(fā): 開發(fā)者可以靈活的使用HTML和CSS布局,使用React語法構(gòu)建組件,實現(xiàn):Android, iOS 兩端代碼的復(fù)用,核心設(shè)計理念: 既擁有Native的用戶體驗,又保留React的開發(fā)效率.
二: React Native的特點(diǎn):
- 使用了 Virtual DOM(虛擬DOM)
- 提供了響應(yīng)式(Reactive)和組件化(Composable)的視圖組件
-
將注意力集中保持在核心庫奢驯,伴隨于此,有配套的路由和負(fù)責(zé)處理全局狀態(tài)管理的庫.
三: React Native的優(yōu)勢:
1. 跨平臺開發(fā)
運(yùn)用React Native次绘,我們可以使用同一份業(yè)務(wù)邏輯核心代碼來創(chuàng)建原生應(yīng)用運(yùn)行在Web端瘪阁,Android端和iOS端;
2. 追求極致的用戶體驗
實時熱部署
3. learn once,write everywhere
4. 社區(qū)活躍,除了Facebook之外邮偎,GitHub上有很多第三方的團(tuán)隊管跺、個人、公司開發(fā)貢獻(xiàn)了很多非常優(yōu)秀的第三方組件禾进,它的社區(qū)是非常健康豁跑、非常活躍的泻云。
React Native不強(qiáng)求一份原生代碼支持多個平臺,Java的是(Write once, run anywhere)
React Native的劣勢:
1. RN框架原生并不支持Web端;
2. RN框架官方并不支持熱更新;
3. Facebook給出的官方RN API不能完全滿足業(yè)務(wù)快速的發(fā)展,它只給了一些很基礎(chǔ)的API艇拍,但業(yè)務(wù)中經(jīng)常會用到的一些多媒體,比如錄音宠纯、錄像卸夕、視頻播放文件以及文件上傳、壓縮征椒、加密等等娇哆,這些都沒有提供。
4. 盡管RN框架性能非常不錯勃救,比H5好很多。實際上經(jīng)過真正的業(yè)務(wù)開發(fā)后治力,發(fā)現(xiàn)90%的場景下RN的性能非常棒蒙秒,可以滿足我們的業(yè)務(wù)需求;但是在另外的10%的場景下宵统,特別是一些交互非常復(fù)雜晕讲、頁面非常復(fù)雜、需要頻繁的更新马澈、需要一些手勢交互的場景瓢省,RN仍有些內(nèi)存跟性能的瓶頸。
4. 以下是react-native 原理圖
四: React Native開發(fā)注意事項:
1.最新版的React Native僅支持iOS 8.0 以上, Android僅支持Android 4.1 以上的版本
2.初學(xué)者建議選擇:
- 功能適中痊班,交互一般勤婚,不需要特別多的系統(tǒng)原生支持;
- 對于部分復(fù)雜的應(yīng)用,可以考慮原生+React Native混合開發(fā)
github地址: https://github.com/facebook/react-native
英文官方文檔:
http://facebook.github.io/react-native/docs/getting-started.html
中文文檔:
https://reactnative.cn/
三端解決方案
螞蟻金服: https://mobile.ant.design/index-cn