RN(一) 為什么要學習RN

前言

學習React Native有一段時間了。因為學著學著容易忘記的特性,于是記錄一下學習過程中個人的總結。文章以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的應用架構。

Xnip2018-03-74_10-31-20.jpg

我們可以很清楚的看到,我們通過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)品提出類似明天上線這樣的需求。在設計架構時就加入RN是值得的。

有很多小公司,資金有限,但是希望多平臺運行,需要快速上線,搶占先機。這樣的App對性能可功能的需求往往不是那么高。這時候RN就可以發(fā)揮其作用了。

以上就是對RN技術的一些個人總結。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評論 25 709
  • React Native學習<一> 認識Recat Native 博客原文:http://www.jianshu....
    AFinalStone閱讀 2,823評論 0 12
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 我知道,這是一封永遠都不會寄出的信。 帥老頭,有多久沒給你寫信了。七年了吧。馬史爸爸表達愛意的方式是給兒子買皮鞋,...
    我是蠻吉閱讀 603評論 0 1
  • 春城,燈光點亮了整個夜空,明君將最后一個句號輸入文檔后,伸了一個懶腰后關閉文檔、關機、鎖門、下樓整套動作一氣呵成。...
    蒔荒閱讀 474評論 1 3

友情鏈接更多精彩內(nèi)容