React Native
一. 什么是React Native窜司?React是什么,Native又是什么铣墨?
React
- React是由Facebook推出的一個JavaScript框架绿聘,主要用于前段開發(fā)嗽上;
- React 采用組件化方式簡化Web開發(fā):
- DOM:每個HTML界面可以看做一個DOM;
- 原生的web開發(fā)方式,HTML一個文件熄攘,javaScript一個文件炸裆,文件分開,就會導(dǎo)致修改起來比較麻煩;
- 可以把一組相關(guān)的HTML標簽和JavaScript單獨封裝到一個組件類中鲜屏,便于復(fù)用烹看,方便開發(fā)。
- React 可以高效的繪制界面
- 原生的Web,刷新界面(DOM)洛史,需要把整個界面刷新.
- React只會刷新部分界面惯殊,不會整個界面刷新。
- 因為React獨創(chuàng)了Virtual DOM機制也殖。Virtual DOM是一個存在于內(nèi)存中的JavaScript對象土思,它與DOM是一一對應(yīng)的關(guān)系务热,當界面發(fā)送變化時,React會利用DOM Diff算法己儒,把有變化的DOM進行刷新.
- React是采用JSX語法崎岂,一種JS語法糖,方便快速開發(fā)闪湾。
Native
- 指使用原生API開發(fā)App冲甘,比如iOS用Object-C或Swift語言開發(fā)。
所以React Native可以總結(jié)為:由Facebook推出途样,基于JavaScript框架和React庫來提高多平臺開發(fā)效率的一門語言江醇。其核心思想是:Learn once, write anywhere.
二. React Native和Weex的對比?
Weex的概念:
- Weex是2016年6月由阿里巴巴推出的一個動態(tài)化的高擴展跨平臺解決方案何暇,支持iOS陶夜、安卓、YunOS及Web等多端開發(fā)部署裆站。
- 思想:Write once, run anywhere.
相同點:
- 都可以實現(xiàn)hot reload条辟,邊更新代碼邊查看效果
- 布局都是基于flexbox
- 都采用Web的開發(fā)模式,使用JS開發(fā)
- 都是支持iOS和Android
- 渲染機制都是Virtual DOM
不同點:
維度 | React Native | Weex |
---|---|---|
支持 | Alibaba | |
思想 | Learn once, write anywhere | Write once, run anywhere |
編寫方式 | 需針對iOS宏胯、Android編寫2份代碼 | 只需要編寫一份代碼羽嫡,即可運行在Web、iOS胳嘲、Android上 |
JS引擎 | JSCore | V8 |
框架 | React.js組件化厂僧,數(shù)據(jù)綁定 Virtual DOM JSX模板學習使用有一定的成本 | Vue.JS 組件化扣草,數(shù)據(jù)綁定 Virtual DOM 模板就是普通的html了牛,數(shù)據(jù)綁定使用mustache風格,樣式直接使用css |
異步 | 提供了Promise的支持 | 只支持callback |
擴展 | 不同平臺可自由擴展 | 為了保證各平臺的一致性辰妙,一次擴展得在各個平臺都實現(xiàn) |
組件 | 除了自帶的鹰祸,還有js.coach上社區(qū)貢獻的,比較豐富 | 基本靠平臺提供 |
性能 | 優(yōu) | 更優(yōu)秀 |
社區(qū) | 非常成熟和活躍 | 開源較晚密浑,社區(qū)處于成長期 |
上手難度 | 困難 | 容易 |
總結(jié):
- Weex 和React Native最主要的區(qū)別可以總結(jié)為:Write once, run anywhere和 Learn once, write anywhere思想層次蛙婴,以及Vue.js和React.js兩大基礎(chǔ)框架上的區(qū)別。
- Weex相對來說學習門檻較低尔破,易用性和性能等方面有優(yōu)勢街图;而React Native則在社區(qū)成熟性、組件和文檔豐富上更有優(yōu)勢懒构。
三. React Native開發(fā)與Native開發(fā)的對比
Native App
- 優(yōu)點:性能高餐济;用戶體驗好;穩(wěn)定性強胆剧。
- 缺點:開發(fā)維護成本高絮姆,版本更新時間長。
React Native
- 優(yōu)點:
- 跨平臺開發(fā)
- 跳過App Store審核,遠程更新代碼篙悯,提高迭代頻率和效率蚁阳,既有Native的體驗,又保留React的開發(fā)效率鸽照。
- 缺點:
- 對于不熟悉前端開發(fā)的人員上手比較慢螺捐;
- 不能真正意義上做到跨平臺;
- app包體積增大明顯移宅。
四.團隊開發(fā)模式的選擇
根據(jù)公司的具體情況選擇開發(fā)模式:
- 如果用戶要求產(chǎn)品的體驗度高归粉、穩(wěn)定性好并且不需要很頻繁的更新,則選擇Native App開發(fā)模式最好漏峰;
- 如果核心業(yè)務(wù)要求用戶體驗度和穩(wěn)定性好糠悼,部分業(yè)務(wù)需要頻繁更新,則選擇Hybrid App(Native + H5)混合開發(fā)模式最優(yōu)浅乔,現(xiàn)在市場上大部分都是這個模式倔喂。
- 如果是創(chuàng)業(yè)型公司或小團隊開發(fā),局限于人力和資源靖苇,非常推薦使用React Native或Weex開發(fā)席噩,基本一個人就可搞定多端開發(fā)任務(wù)(估計會很累^ v ^)。
當然這也不是絕對的贤壁,就像我們公司(搞金融的)的產(chǎn)品悼枢,原來是使用Hybrid App開發(fā)模式,現(xiàn)在準備部分業(yè)務(wù)接入RN脾拆。