自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Airbnb:我們?yōu)槭裁磿?huì)選擇放棄React Native

新聞 Android
近日,Airbnb 工程師 Gabriel Peal 在接受外媒采訪時(shí),聊到了 Airbnb 的移動(dòng)開(kāi)發(fā)歷史、React Native 的優(yōu)缺點(diǎn),以及 Airbnb 最終為什么決定從 React Native 遷移。

 今年6月,Airbnb 技術(shù)團(tuán)隊(duì)宣布,Airbnb 將放棄使用 React Native,回歸到使用基于原生技術(shù)的自有框架開(kāi)發(fā) App。作為一家世界級(jí)頂尖公司,在對(duì) React Native 投入大量精力后,突然決定棄它而去,這讓不少想要使用和正在使用 React Native 的人都感到震驚和疑惑。

近日,Airbnb 工程師 Gabriel Peal 在接受外媒采訪時(shí),聊到了 Airbnb 的移動(dòng)開(kāi)發(fā)歷史、React Native 的優(yōu)缺點(diǎn),以及 Airbnb 最終為什么決定從 React Native 遷移。

React Native 對(duì) Airbnb 來(lái)說(shuō)最大優(yōu)勢(shì)是快速開(kāi)發(fā)和平臺(tái)不可知論(platform agnosticism)。通過(guò) React Native ,Airbnb 可以利用整個(gè)開(kāi)發(fā)團(tuán)隊(duì)來(lái)幫助構(gòu)建和支持他們的移動(dòng)應(yīng)用。這意味著無(wú)論后來(lái)的員工在移動(dòng)和 Web 開(kāi)發(fā)方面的背景如何,都可以快速培訓(xùn)上手。它還意味著更精簡(jiǎn)的代碼庫(kù),因?yàn)槟軌蚩缛齻€(gè)平臺(tái)部署一個(gè)存儲(chǔ)庫(kù)。但同時(shí),也帶來(lái)了挑戰(zhàn):

從 0 至 1 ,需要一大筆投入

許多人認(rèn)為在 Airbnb 決定使用 React Native 時(shí)有做完整的遷移,其實(shí)到目前為止,React Native 代碼僅占 Airbnb 代碼庫(kù)和開(kāi)發(fā)資源的 15-20%,它一直就不是 Airbnb 公司的主要平臺(tái)。盡管 React Native 是一個(gè)框架并且極大地簡(jiǎn)化了移動(dòng)開(kāi)發(fā)流程,但啟動(dòng)和運(yùn)行起來(lái)并非易事,尤其是在已有現(xiàn)成代碼庫(kù)的情況下。將 React Native 集成到現(xiàn)有的移動(dòng)代碼庫(kù)中預(yù)期會(huì)耗費(fèi)大量時(shí)間和精力。

開(kāi)發(fā)者仍需編寫(xiě)原生代碼

對(duì)于 API 在兩個(gè)平臺(tái)之間具有明確橋梁的簡(jiǎn)單應(yīng)用,React Native 是一個(gè)很好的選擇。在 Airbnb 移動(dòng)應(yīng)用的早期階段,React Native 是移動(dòng)應(yīng)用中的強(qiáng)大加速器。但最終,API 將無(wú)法以你想要的方式運(yùn)行,你還是不得不深入到原生庫(kù)中進(jìn)行必要的調(diào)整。

如果聘請(qǐng)一位 JavaScript 開(kāi)發(fā)者來(lái)維護(hù)你的 React Native 項(xiàng)目,那么他們必須編寫(xiě)原生代碼來(lái)彌補(bǔ)功能上的縫隙。

小心“地雷”

React Native 代碼中的地雷和互作用極難追蹤和重現(xiàn)。舉個(gè)實(shí)際例子,Airbnb 團(tuán)隊(duì)有遇到 React Native 組件在某些手機(jī)上顯示一片空白的問(wèn)題,該 bug 不僅不可靠,而且難以追蹤。

解決方案是關(guān)閉初始化 Fresco ,這是一個(gè)適用于 Android 的 React Native 標(biāo)準(zhǔn)圖像渲染庫(kù)。直到今天,工程師仍然不明白為什么這個(gè)步驟修復(fù)了這個(gè) bug 。

投入永無(wú)止境/迭代緩慢

許多團(tuán)隊(duì)使用 React Native 進(jìn)行小型移動(dòng)應(yīng)用的原型設(shè)計(jì),并相信它能解決他們的所有問(wèn)題。但與所有開(kāi)源軟件一樣,該平臺(tái)在不斷變化,每天都會(huì)發(fā)現(xiàn)新的 bug 和問(wèn)題。支持 React Native 還處于動(dòng)蕩的生態(tài)需要持續(xù)的投資。

比如 Airbnb 工程師希望一個(gè)符合其產(chǎn)品目標(biāo)的補(bǔ)丁能夠盡快合并進(jìn)入 React Native 框架,不幸的是,React Native 的開(kāi)發(fā)生命周期為每四周發(fā)布一次。如果這次沒(méi)通過(guò),他們將不得不等待差不多一個(gè)月,來(lái)重新審查或采用他們的修改。

隨著 Airbnb 的發(fā)展加速,他們無(wú)法承擔(dān)其中的風(fēng)險(xiǎn)。由于劣勢(shì)高于優(yōu)勢(shì),促使 Airbnb 重新考量,并最終放棄 React Native 開(kāi)發(fā)。

此外,雖然除了 React Native 之外還有其他的跨平臺(tái)替代方案,比如 Google 的 Flutter 和微軟的 Xamarin ,但和上面提到的類(lèi)似的問(wèn)題也都可以在這些框架上面找到,而且這兩個(gè)框架在 Google 和 Microsoft 中的使用率都相對(duì)較低。雖然跨平臺(tái)框架能解決大多數(shù)簡(jiǎn)單問(wèn)題,但一些更復(fù)雜的問(wèn)題最終還是需要回到相應(yīng)移動(dòng)設(shè)備的原生平臺(tái)來(lái)處理。

[[244947]]

責(zé)任編輯:張燕妮 來(lái)源: softwareengineeringdaily.com
相關(guān)推薦

2011-06-08 10:30:08

MongoDB

2019-12-30 08:34:40

ZabbixPrometheus監(jiān)控

2021-02-01 07:20:51

KafkaPulsar搜索

2020-06-10 09:06:48

MongoDB架構(gòu)高可用

2020-01-18 09:35:03

微服務(wù)團(tuán)隊(duì)架構(gòu)

2018-12-21 11:26:49

MySQLMongoDB數(shù)據(jù)庫(kù)

2016-09-27 21:25:08

Go語(yǔ)言Ken Thompso

2020-03-03 15:31:47

ReactVue前端

2020-09-16 14:56:11

MYSQL知識(shí)數(shù)據(jù)庫(kù)

2024-02-20 01:53:01

ReactFlutter開(kāi)發(fā)

2019-04-19 11:56:48

框架AI開(kāi)發(fā)

2020-02-24 09:38:05

PythonGo語(yǔ)言Linux

2024-02-05 21:48:25

VueReactHooks

2020-08-14 10:40:35

RestTemplatRetrofitJava

2020-11-16 12:03:08

Java開(kāi)發(fā)代碼

2019-08-20 09:24:54

Python編程語(yǔ)言Java

2024-06-24 07:58:00

2009-04-23 10:41:59

微軟IE瀏覽器

2023-07-23 17:19:34

人工智能系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)