[譯] Microsoft/ReactXP 簡介

在Github的Microsoft項目中發現一個名為ReactXP的項目,這是一個由Skype團隊開發的,用於進行Web及跨平台APP開發的庫(建立在React Js 和 ReactNative之上)。看了下國內還沒介紹,特將其官網的介紹博文翻譯過來,microsoft.github.io/rea

從VS Code, .Net Core, TypeScript, PowerShell, ReactXP 等一系列的優秀開源項目來看,自從Nadella主政提出「移動優先、雲優先」的戰略後,微軟正積極擁抱開源社區。

雖然,曾經在移動戰略上失利,但現在微軟正煥發著新的活力。 ——吳鹽以兌 譯註

我們微軟Skype團隊很高興地宣布,現在開源了ReactXP,我們開發這個庫目的是將其用於跨平台的開發。它基於React JS和React Native,允許您使用單個代碼庫來創建Web和Native的應用。

ReactXP的歷史

Skype運行在許多平台上,包括台式機,筆記本電腦,手機,平板電腦,瀏覽器,甚至電視和汽車。歷史上,每個Skype客戶端的UI都是從零開始以每個平台的「Native」語言來編寫的(iOS上使用Objective C,Android上使用Java,Web上使用HTML和JavaScript等)。大約一年前,我們著手努力重塑Skype。我們決定,我們需要採取新的方法來進行客戶端開發 - 這將使我們的工程效率和敏捷性最大化。我們想過在不同的代碼庫中多次實現新的功能,我們也想盡量減少重複工作。我們探索了一些可能的選項,像Cordova(PhoneGap)這樣的Web封裝方案沒有能達到我們希望的性能或原生體驗( 「native feel」);Xamarin是跨平台移動開發的絕佳解決方案,但可惜不能用於Web版本。我們最終決定在React JS和React Native之上建立我們的新客戶端。為了統一React JS和React Native實現中的行為和介面,我們開發了ReactXP。 (最初將其稱為ReactX,因此在來源中提及此術語。)

Skype團隊還對React Native代碼庫做出了許多貢獻,修復錯誤,提高性能,並消除React JS和React Native之間的行為差異。最大的貢獻是React Native布局引擎的重大改造。原始實施方式鬆散地遵循W3C flexbox標準,但與某些重要方面的標準不同。現在更新的布局引擎能可靠地生成與所有兼容的Web瀏覽器相同的布局。

ReactXP設計理念

ReactXP被設計為一個在React和React Native之上的一個輕量級跨平台抽象層。它實現了十幾個可用於構建更複雜組件的基礎組件。它還實現了一個被大多數應用程序所需的API命名空間集。

ReactXP目前支持以下平台:Web(React JS),iOS(React Native),Android(React Native)和Windows UWP(React Native)。 Windows UWP仍然是一項正在進行的工作,一些組件和API尚未完成。

ReactXP 核心(「core」)僅包含通用功能。更加特定的跨平台功能用ReactXP擴展的形式提供。 Skype團隊開發了大約二十個這樣的擴展,我們計劃逐步來開源其中一些。擴展的形式會允許我們擴展ReactXP,而不增加其佔用空間或複雜性。

當我們決定在ReactXP中公開哪些屬性(props)和樣式(style attributes)時,我們儘力堅持能在所有支持的平台上統一實施的方式。例如,我們不會公開任何不兼容React Native的HTML特定屬性或特定CSS樣式。在一些特殊情況下,我們公開某一平台特定屬性或樣式時,會將在文檔中標記為在其他平台上的「非通用」(「no ops」),但這只是在我們找不到變通的解決辦法時才會如此。

ReactXP的未來

Skype團隊將繼續維護和構建ReactXP,微軟的其他團隊也開始使用它並作出貢獻。今天我們開放給更廣泛的開源社區。希望其他人會覺得有用,歡迎反饋和貢獻。

我們計劃每月新增一個ReactXP版本,與React Native版本大致對齊。

去代碼庫Microsoft/reactxp看看。

推薦閱讀:

React 許可證的五宗罪
Redux 非同步流最佳實踐
基於React.js開發IM即時通訊系統,觸摸大型互聯網公司真實項目
React v15.5.0更新說明 & v16.0.0更新預告
如何入門 React?你應該跟著這八步走

TAG:ReactNative | React | 跨平台 |