原文鏈接: http://arc.applause.com/2015/09/15/facebook-react-native-universal-app-platform/
原文發(fā)表時間: 2015年9月15日
真的可以么?一個代碼庫就能搞定一切秧均?
一次編寫锉罐,到處運行。自從個人計算及多平臺技術出現(xiàn)以來赏枚,這句話就變成了無數(shù)軟件開發(fā)者的夢想亡驰。 雖然Web技術給那些渴望尋求一次編寫方案的程序員們帶來了希望,但互聯(lián)網(wǎng)巨頭們卻一直未能根本解決這個問題饿幅。
不過凡辱,問題總會有答案的。
JavaScript是一門Web開發(fā)語言栗恩。如果Facebook一直這么堅持下去透乾,JavaScript仍然將是開發(fā)人員構建“一次編寫、到處運行”的iOS和Android應用的主流語言磕秤。
過去幾年乳乌,F(xiàn)acebook一直在建設一個跨平臺的開發(fā)平臺--React。今年初, Facebook公布了React Native, 一個一次編寫就可以在所有平臺上運行的語言市咆,該語言可以取代JavaScript用于構建類原生的iOS和Android應用汉操。
React Native是Facebook基于“一次編寫,到處運行”理念的第二次大膽嘗試(第一次是HTML5)蒙兰,試圖用一套同樣的源碼來構建Web磷瘤、 iOS和Android應用。盡管React Native還沒有迎來它的黃金時期搜变,但Facebook已經(jīng)建好了一個看上去健壯且可伸縮的開發(fā)平臺來使用JavaScript構建接近原生性能的應用采缚。
React Native: 為 iOS & Android 設計的開源框架
第一個React Native概念的具體應用是一款叫做Facebook 廣告管理器的iOS應用(為小型企業(yè)管理和創(chuàng)建廣告)。本周挠他,F(xiàn)acebook宣布其已將大部分iOS版廣告管理器的代碼做了移植仰担,成功構建出了第一個React Native的Android應用。
和iOS一樣, Facebook也已將React Native for Android開源, 讓任何開發(fā)者都可以使用React Native工具在任意的平臺上構建APP應用。Facebook的開發(fā)人員Daniel Witte和Philip von Weitershausen寫到摔蓝,他們可以將85%的iOS廣告管理器Android版的代碼分享出來赂苗。
“當所有事情都宣布并且完成后,我們兌現(xiàn)了自己的承諾--我們可以將Facebook第一個完整的React Native應用部署到兩個平臺上贮尉,界面和操作與原生應用并無兩樣拌滋,并且是由同一個JavaScript工程師組成的團隊構建出來〔卵瑁”Witte和 von Weiterhausen寫到败砂。
目前,React Native對iOS和Android兩個大平臺都已開源魏铅。 但這并不意味著每個程序員都可以輕松的在此平臺上用Javascript編寫iOS和Android應用昌犹。據(jù)稱,F(xiàn)acebook在iOS的基礎上構建Android版的廣告管理器應用時遇到了很大的挑戰(zhàn)览芳。
對于Facebook來說斜姥,最大的問題在平衡多個函數(shù)庫和兩套代碼源。一些iOS和Android之間的設計差異也需要被消除沧竟。
Witte和von Weiterhausen寫到:
React Native團隊隨著我們的App應用開發(fā)一起研發(fā)出了平臺铸敏,并拿出了我們所需要的本地組件及API。那些組件可以為后面開發(fā)App的每個人帶來好處悟泵。即使我們不得不自己做一些組件出來杈笔,在純原生的系統(tǒng)上使用React Native仍然是值得做的一件事。我們?nèi)绻粚懩切┙M件糕非,那些組件也就不會在將來被其他團隊重用蒙具。
通用APP時代的到來
幾個正在進行中的重大項目正在突破平臺和操作系統(tǒng)之間的障礙。React Native是Facebook強力推進的“一次編寫朽肥,到處運行”的開發(fā)框架店量。微軟也想要所有的代碼,給程序員們提供各種“方便的橋梁“這將能幫助他們從iOS, Android和Web上獲得代碼(和更老的Win32 app一起)用以構建跨多個設備平臺的Windows 10 app應用鞠呈。
蘋果和Google在開始研究如何跨平臺地構建App的時候并沒有和Facebook與微軟一起在相同的領域融师,但他們各自都在自己的生態(tài)系統(tǒng)里通過精簡的手段跨越設備之間的壁壘。蘋果已經(jīng)可以使用Xcode來為Apple Watch蚁吝,iPhone旱爆,iPad,CarPlay構建應用窘茁,很快Apple TV也會使用相同的代碼庫怀伦。Google已經(jīng)擁有了能將Android應用移植到ChromeOS上的能力,同時還會為Android TV,Auto和Watch提供hooks山林。
HTML5的成熟--加上CSS和Javascript--也會促進跨平臺開發(fā)的演進和發(fā)展房待。當Facebook在幾年前使用HTML作為其移動應用的基礎時,結果是有些作用但緩慢且不那么明顯。這是為什么Facebook拋棄了HTML5轉(zhuǎn)向用Objective-C和Java寫的原生app桑孩。但Facebook從沒有放棄跨平臺的夢想拜鹤,他持續(xù)做出的努力終于開花結果--那就是擁有更穩(wěn)定平臺和更廣闊發(fā)展空間的React Native。