React Native入坑須知

React Native 是一款用來開發(fā)真正原生瞭稼、可渲染 iOS 和 Android 移動應(yīng)用的 JavaScript 框架。它基于 Facebook 公司開源的 JavaScript 用戶界面開發(fā)框架 React 而產(chǎn)生哑舒,但 React 將瀏覽器作為渲染平臺溪胶,而 React Native 的渲染平臺則是移動設(shè)備冗尤。也就是說,Web 開發(fā)者現(xiàn)在就可以使用我們非常熟悉的 JavaScript 類庫來開發(fā)真正原生的移動應(yīng)用曲楚。并且,由于編寫的大部分代碼可以在平臺之間共享褥符,React Native 可以讓你更簡單地同步開發(fā) Android 和 iOS 應(yīng)用龙誊。

與 Web 平臺上的 React 相似,React Native 也使用 JSX 進行開發(fā)喷楣,這種編程語言結(jié)合了 JavaScript 和類 XML 標(biāo)記語言趟大。React Native 在后臺通過“橋接”的方式調(diào)用由 Objective-C(iOS 平臺)或 Java(Android 平臺)開放的原生渲染接口,因此铣焊,你的應(yīng)用將會使用真正原生的移動 UI 組件逊朽,而不是傳統(tǒng)的 WebView 渲染方式,進而擁有與其他移動應(yīng)用一樣的外觀和體驗曲伊。同時叽讳,React Native 也為 JavaScript 開放了平臺接口,讓你的應(yīng)用能夠使用平臺提供的功能坟募,例如攝像頭和用戶定位等岛蚤。

React Native 目前同時支持 iOS 和 Android,今后也可能擴展到其他平臺上懈糯。在本書中涤妒,我們將會同時介紹 iOS 和 Android 的知識,并且書中大部分代碼都能跨平臺運行赚哗。沒錯她紫,你完全可以用 React Native 來開發(fā)用于正式發(fā)布的移動應(yīng)用。據(jù)了解蜂奸,F(xiàn)acebook(https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/)犁苏、Palantir(https://medium.com/@clayallsopp/react-native-in-production-2b3c6e6078ad#.wui5g18dx)和 TaskRabbit(http://tech.taskrabbit.com/blog/2015/09/21/react-native-example-app/)等公司已在使用它開發(fā)面向用戶的應(yīng)用。

1. React Native的優(yōu)點

事實上扩所,React Native 調(diào)用宿主平臺標(biāo)準(zhǔn)渲染接口的方式已經(jīng)使它從其他現(xiàn)有的跨平臺應(yīng)用開發(fā)方案( 比如 Cordova 或 Ionic) 中脫穎而出。 目前通過編寫 JavaScript朴乖、HTML 和 CSS 的方式進行應(yīng)用開發(fā)的方案大多使用 WebView 進行界面渲染祖屏,當(dāng)然這種方案是可行的,但也帶來了一些問題买羞,尤其是性能損耗袁勺。同時,這種方案通常無法使用宿主平臺的原生 UI 組件畜普,所以這些框架嘗試去模仿原生 UI 組件的行為期丰,而模仿的效果通常讓人覺得不夠真實。為了模仿各種類似動畫這樣的細節(jié),一般都要付出巨大的努力钝荡,然而它們很快又會過時街立。

相反,React Native 則將你的代碼解析成真正原生的 UI 組件埠通,利用了所用平臺上現(xiàn)有的視圖渲染方式赎离。并且,由于 React 不在 UI 主線程中運行端辱,你的應(yīng)用可以在不犧牲靈活性的前提下保持高性能梁剔。React Native 的生命周期與 React 相同,當(dāng)屬性(props)或狀態(tài)(state)發(fā)生改變時舞蔽,React Native 會重新渲染視圖荣病。而與瀏覽器上的 React 最大的不同在于,React Native 使用了宿主平臺上的 UI 元素來代替 HTML 和 CSS渗柿。

對于習(xí)慣了 Web 平臺的 React 開發(fā)者來說众雷,這意味著你可以使用熟悉的工具來開發(fā)真正原生的移動應(yīng)用。在開發(fā)者體驗與跨平臺開發(fā)等方面做祝,React Native 較傳統(tǒng)的移動端開發(fā)來說也有一定的優(yōu)勢砾省。

?開發(fā)者體驗

如果你曾經(jīng)有過移動端的開發(fā)經(jīng)歷,將會對 React Native 的易用性感到震驚混槐。React Native 團隊已經(jīng)研發(fā)了強大的開發(fā)工具并在框架內(nèi)嵌入了友好的錯誤提示编兄,因此使用這些強大的工具會讓開發(fā)體驗更加自然。

例如声登,由于 React Native 使用了 JavaScript狠鸳,我們查看修改結(jié)果時不需要重新編譯。相反悯嗓,按下 Command+R 就可以刷新應(yīng)用件舵,就和在網(wǎng)頁上開發(fā)一樣。在傳統(tǒng)移動端開發(fā)中脯厨,編譯構(gòu)建應(yīng)用所花費的時間會積少成多铅祸,相比之下 React Native 的快速迭代就像是天賜之福。

React Native 還可以讓你更好地利用智能調(diào)試工具以及錯誤報告機制合武。如果你習(xí)慣于使用 Chrome 或者 Safari 的開發(fā)工具(下圖)临梗,那么使用它們進行移動開發(fā)一定也會讓你十分愉悅。同樣稼跳,你可以選擇喜愛的任何文本編輯器來開發(fā) JavaScript:React Native 不強制你使用 Xcode 進行 iOS 開發(fā)盟庞,也不強制使用 Android Studio 進行 Android 開發(fā)。

使用 Chrome 調(diào)試器

除了能逐漸改善開發(fā)者體驗之外汤善,React Native 也極有可能給你的產(chǎn)品發(fā)布周期帶來一些積極的影響什猖。例如票彪,Apple 公司允許通過網(wǎng)絡(luò)對基于 JavaScript 開發(fā)的功能進行更新,無需額外的審核周期不狮。

所有這些小福利將會節(jié)省你和你的伙伴們的時間和精力降铸,讓你可以專注于工作中那些更有趣的部分,同時也能提高你的工作效率荤傲。

?代碼復(fù)用與知識共享

使用 React Native 可以大大減少開發(fā)移動應(yīng)用所需的資源垮耳。任何了解如何編寫 React 的開發(fā)者現(xiàn)在都可以使用相同的技能同時開發(fā) Web 應(yīng)用、iOS 應(yīng)用和 Android 應(yīng)用遂黍。React Native 避免了按平臺分工的必要终佛,可以讓你的團隊更加快速地迭代產(chǎn)品,并更加高效地共享知識和資源雾家。

除了知識的共享之外铃彰,你的大部分代碼也可以被共享。當(dāng)然芯咧,不是你寫的所有代碼都可以做到跨平臺牙捉;這取決于你需要在特定的平臺上實現(xiàn)什么功能,你可能偶爾也需要涉及 Objective-C 或 Java 的知識(好在這也不是很糟糕敬飒,我們將會在第 7 章講解本地模塊的用法)邪铲。使用 React Native,在不同平臺之間復(fù)用代碼將會變得出乎意料地簡單无拗。例如带到,React Europe 2015 大會(https://www.youtube.com/watch?v=PAA9O4E1IM4&feature=youtu.be)提到,F(xiàn)acebook Ads Manager 這款 Android 應(yīng)用共享了其 iOS 版本 87% 的代碼英染。另外揽惹,我們通過本書完成的一款閃卡應(yīng)用做到了 iOS 和 Android 代碼的完全復(fù)用。這是很難超越的成就四康!

2.?風(fēng)險和缺點

就像世間萬物一樣搪搏,React Native 也難免存在一些缺點,至于 React Native 是否適合你的團隊闪金,則取決于你們自身的情況疯溺。

React Native 于 2015 年 3 月發(fā)布了對 iOS 平臺的支持,同年 9 月開始支持 Android 平臺毕泌。由于目前 React Native 項目還很年輕喝检,不夠成熟可能是其最大的風(fēng)險。它的文檔確實還有提升的空間撼泛,同時項目也在不斷升級和改進。一些特性在 iOS 和 Android 平臺上仍未得到支持澡谭,社區(qū)也在不斷尋找最佳的開發(fā)實踐愿题。不過损俭,好在大多數(shù)情況下你都可以自己實現(xiàn)那些缺少的接口,我們也會在第 7 章討論相關(guān)內(nèi)容潘酗。

React Native 在你的項目中引入了新的一層杆兵,因此帶來了一些調(diào)試上的麻煩,尤其是在 React 和宿主平臺交互時仔夺。我們將在第 8 章更加深入地講解 React Native 的調(diào)試技巧琐脏,并探討一些常見的問題。

React Native 依然還很年輕缸兔,追隨新技術(shù)時可能遇到的問題在此也不可避免日裙。不過總體來說,我覺得你將會看到它帶來的收益大于風(fēng)險惰蜜。

3. 更多學(xué)習(xí)資源

《React Native開發(fā)指南》代碼示例

https://github.com/bonniee/learning-react-native

加入 LearningReactNative.com(http://learningreacnative.com)的郵件列表獲取后續(xù)的文章昂拂、建議和實用的資源。

官方文檔(https://facebook.github.io/react-native/)中有大量優(yōu)秀的參考資料抛猖。

React Native 社區(qū)也是實用的資源

Brent Vatne 的 React Native newsletter(http://brentvatne.ca/react-native-newsletter/

Stack Overflow 上的 react-native 標(biāo)簽分類(http://stackoverflow.com/questions/tagged/react-native

Freenode 上的 #reactnative 小組(irc://chat.freenode.net/reactnative)

<知乎問答>

如何評價 React Native格侯?

https://www.zhihu.com/question/27852694

react.js,angular.js,vue.js學(xué)習(xí)哪個好?

https://www.zhihu.com/question/39943474

內(nèi)容整理自《React Native開發(fā)指南》

作者:Bonnie Eisenmen

譯者:黃為偉

定價:59

React Native核心貢獻者Brent Vatne推薦

Amaozn 五星好評财著,Twitter資深軟件工程師通過豐富示例詳細講解React Native

從基礎(chǔ)開始逐步深入联四,利用React Native成功部署可100%代碼復(fù)用的跨平臺應(yīng)用

在React Native中利用現(xiàn)有的JavaScript和React知識,就可以開發(fā)和部署功能完備的撑教、真正原生的移動應(yīng)用朝墩,并同時支持iOS與Android平臺。除了框架本身的概念講解之外驮履,本書還討論了如何使用第三方庫鱼辙,以及如何編寫自己的Java或Objective-C的React Native擴展。

<購買>

京東:http://item.jd.com/11942017.html

亞馬遜:https://www.amazon.cn/dp/B01HU04MK6

當(dāng)當(dāng):http://product.dangdang.com/23995421.html

試讀及購買電子版(29.99):http://www.ituring.com.cn/book/1846

贈書活動

你喜歡哪款類庫或者框架玫镐?

評論中說說自己喜歡的類庫或者框架(or 被虐踩過的坑)倒戏,挑選3人以下任選一本,截止21日12:00恐似。

React Native開發(fā)指南

React Native入門與實戰(zhàn)

AngularJS權(quán)威教程

jQuery基礎(chǔ)教程(第4版)

精通jQuery(第2版)

深入淺出Node.js

Node.js實戰(zhàn)

Ext JS實戰(zhàn)(第2版)

本文選自圖靈教育微信杜跷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市矫夷,隨后出現(xiàn)的幾起案子葛闷,更是在濱河造成了極大的恐慌,老刑警劉巖双藕,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淑趾,死亡現(xiàn)場離奇詭異,居然都是意外死亡忧陪,警方通過查閱死者的電腦和手機扣泊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門近范,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人延蟹,你說我怎么就攤上這事评矩。” “怎么了阱飘?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵斥杜,是天一觀的道長。 經(jīng)常有香客問我沥匈,道長蔗喂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任咐熙,我火速辦了婚禮弱恒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棋恼。我一直安慰自己返弹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布爪飘。 她就那樣靜靜地躺著义起,像睡著了一般。 火紅的嫁衣襯著肌膚如雪师崎。 梳的紋絲不亂的頭發(fā)上默终,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音犁罩,去河邊找鬼齐蔽。 笑死,一個胖子當(dāng)著我的面吹牛床估,可吹牛的內(nèi)容都是我干的含滴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼丐巫,長吁一口氣:“原來是場噩夢啊……” “哼谈况!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起递胧,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤碑韵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缎脾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祝闻,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年遗菠,在試婚紗的時候發(fā)現(xiàn)自己被綠了治筒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屉栓。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡舷蒲,死狀恐怖耸袜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牲平,我是刑警寧澤堤框,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站纵柿,受9級特大地震影響蜈抓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昂儒,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一沟使、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渊跋,春花似錦腊嗡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒿囤,卻和暖如春客们,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背材诽。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工底挫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脸侥。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓建邓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親湿痢。 傳聞我的和親對象是個殘疾皇子涝缝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,178評論 25 707
  • demo完成之后,公司沒用譬重,沒有精力再弄了拒逮,給大家列出學(xué)習(xí)資料 React Native 構(gòu)建 Facebook ...
    wu大維閱讀 17,090評論 8 472
  • 雨一直下 聲音由遠及近 像你 在耳邊嘆息 卻抓不到星星點點的夢 雨一直下 震耳的轟鳴聲 可曾讓你心動 戰(zhàn)戰(zhàn)兢兢的蜷...
    栗子栗兒閱讀 302評論 0 0
  • 寫下這個題目,我笑了臀规。 是開心的笑滩援,自從小學(xué)畢業(yè)的那天起,就再也不承認自己是小學(xué)生了塔嬉。為什么呢玩徊? 很簡單啊租悄,因為自...
    俏村姑閱讀 279評論 0 0