前言
學習React Native有一段時間了莫辨。因為學著學著容易忘記的特性,于是記錄一下學習過程中個人的總結(jié)。文章以ES6為標準開發(fā)(ES7特性還沒來得及看)椅贱。本人是一個純iOS開發(fā)别瞭,所以適配上主要會以iPhone為主窿祥,安卓在后面也會提到。文章有什么錯誤及不足的地方蝙寨,歡迎各位指正晒衩!謝謝!
文章主要目錄:
- (一)為什么要學習RN墙歪?
- (二)開發(fā)的準備與基礎了解
為什么要學習RN
作為一個移動端開發(fā)听系,對ReactNative(以下簡稱RN)的大名可以說是如雷貫耳了。自從Facebook在2015年的F8大會上宣布以來虹菲。這個項目在GitHub已經(jīng)幾萬的star和上萬的fork了靠胜。作為一個開源組件,關注度可以說是極高的毕源!不過最初的RN僅僅是對iOS的支持浪漠,不過隨著微軟,三星等各個大佬的入伙霎褐。主流的iOS和Android支持度已經(jīng)很好了址愿。而且對于Windows Phone等其他平臺的開發(fā),也都在如火如荼的進行中冻璃。
牛逼吹過了响谓,現(xiàn)在我們來理性的分析一下RN的優(yōu)劣。
作為一種技術俱饿,他也僅僅是一種技術手段而已歌粥。作為使用者,我們不必去了解其底層的實現(xiàn)(當然拍埠,能夠了解自然是最好的)失驶。RN主要是提供了一種多平臺同時運行的語言環(huán)境。RN的口號是:Learn Once枣购,Write AnyWhere
嬉探。恩,很熟悉的口號棉圈,記得當初在大學里面學Java的時候似乎也是差不多:Write Once涩堤,Run AnyWhere
。確實很像分瘾,但是實際上他們是完全不一樣的胎围!對于Java來說,他擁有強大的虛擬機,使得他能夠在任何平臺上都可以通過JVM跑起來白魂,減低的是開發(fā)成本汽纤。畢竟只要Write Once
!但是RN的口號是Learn Once
福荸。說的通俗點蕴坪,就是學起來炒雞簡單。至于各個品臺的適配等工作敬锐,就慢慢自己折騰吧背传!當然這個也和移動端設備的千奇百怪有關,不同設備從硬件到軟件的環(huán)境都可能不同台夺。比如Android有返回等物理按鍵径玖,但是iPhone就沒有這樣的按鈕。等等類似的這種情況都使得我們不得不單獨做適配谒养。但是縱然如此挺狰,也改變不了RN具備強大的跨平臺行的特點,我們可以先來看看RN的應用架構(gòu)买窟。
我們可以很清楚的看到丰泊,我們通過RN開發(fā)的應用最終的實現(xiàn)形式依然是原生代碼,和原始混合應用(原生+WebView)的優(yōu)勢
就體現(xiàn)出來了始绍。
- RN在跳過了原生平臺繁瑣API學習成本的同時瞳购。其高效和跨平臺的優(yōu)勢也很明顯。
- 在各大廠商和全球開發(fā)者的監(jiān)督下亏推,穩(wěn)定性與性能和原生平臺的近似学赛。
- 對于線上的Bug和緊急需求,其具備快速發(fā)布的能力吞杭。
說完了優(yōu)勢盏浇,自然也要說說他的劣勢
了。
- 作為一個由Facebook維護的三方庫芽狗。其更新完全依賴于Facebook绢掰,如果哪一天不更新了。事實上很多火爆一時的第三方庫童擎,最后因為無人維護滴劲,被開發(fā)者丟棄。但是有一點是不會變的顾复!一門具備跨平臺的高性能是被市場所需求的班挖。不過就目前的發(fā)展情況而言,RN社區(qū)的活躍度及市場對于RN開發(fā)的需求還是很大的芯砸。
- 不成熟性萧芙。RN目前最新版本是0.51给梅。這就意味著,尚未穩(wěn)定双揪,很多原生的功能尚未很好的實現(xiàn)破喻。是一個依然處于開發(fā)階段的庫,這也意味著盟榴,能多深層次的優(yōu)化和兼容操作,RN目前是無法像原生一樣的婴噩。同時針對不同的設備擎场。RN開發(fā)需要更多的邏輯開銷去思考不同設備之間的兼容問題。
- 調(diào)試成本几莽。RN是一個相對比較重的庫迅办。會增加代碼庫的復雜度,其調(diào)試與原生相比有著一定的困難章蚣。
說了優(yōu)勢劣勢站欺,總體來說,我們不得不肯定RN本身真的是個很牛逼的庫纤垂。我最初不學習RN的借口是矾策,其不像原生一樣有著那么好的性能,但是實際上峭沦,因為他最終調(diào)用的是原生庫贾虽。性能上和原生相差無幾。
來說說RN主要的應用場景
對于需求今天一個樣吼鱼,明天一樣樣這樣變動很大的App蓬豁。我們往往需要一套完備的熱更新機制。比如對于現(xiàn)在大多數(shù)電商App來說菇肃,電商應用實時性較強地粪。需求甚至無法在開發(fā)初期對產(chǎn)品短期內(nèi)可能發(fā)生的變化有一定程度上的預估。這時候為了防備產(chǎn)品提出類似明天上線這樣的需求琐谤。在設計架構(gòu)時就加入RN是值得的蟆技。
有很多小公司,資金有限笑跛,但是希望多平臺運行付魔,需要快速上線,搶占先機飞蹂。這樣的App對性能可功能的需求往往不是那么高几苍。這時候RN就可以發(fā)揮其作用了。
以上就是對RN技術的一些個人總結(jié)陈哑。