昨天,微軟在Github上發(fā)布了一個新的開源項目:ReactXP,吸引了不是前端和移動開發(fā)者的關注。

Github鏈接:https://github.com/microsoft/reactxp

項目官網(wǎng):https://microsoft.github.io/reactxp/

  

從名字來看,它是基于React框架的,官網(wǎng)上微軟稱之為跨平臺App開發(fā)工具庫,并羅列了它的主要特性,包括:

基于React.js和React Native構建。

XP表示支持跨平臺,目前支持Web瀏覽器、Android、iOS,計劃支持UWP,至于其它桌面平臺則建議使用類似Electron這樣的工具。

創(chuàng)建響應式的,接近原生應用體驗的App.

簡單來說,ReactXP為React.js和React Native增加了一個中間層,讓React Web應用的API與React Native兼容。

在官網(wǎng)的文檔里,官方團隊進一步解釋了圍觀群眾可能疑惑的一些問題。

  ReactXP與React Native的關系

官方解釋說,ReactXP構建于React Native之上,提供幾乎與RN相同的Web版本API,但ReactXP并不是RN的子集或超集。

ReactXP最重要的特點是它的API的一致性,在某些情況下,平臺之間的實現(xiàn)不同,API會在一些平臺能使用,在另一些平臺則是無操作(但能被調用),ReactXP盡可能的不讓用戶去關心平臺區(qū)別。

使用ReactXP能過直接調用RN或React DOM,但這時需要根據(jù)條件判斷平臺來進行相應的操作。

  ReactXP與React Web的異同

如果關心React發(fā)展的同學可能發(fā)現(xiàn),微軟的這個東西怎么似乎見過。不錯,早在15年,淘寶FED就推出了一個React Web項目,使用React Native兼容的API開發(fā)Web應用。后來Twitter也推出了一個React Native for Web項目,與前者目標相似,不過在國外這個更為知名。

微軟解釋了ReactXP和React Native for Web的不同。ReactXP只包含能夠跨平臺的API和組件,它的目標之一是讓開發(fā)者使用自己喜歡的環(huán)境開發(fā)應用,并且有信心讓應用跑在不同的平臺上而不用過多的擔心兼容問題。ReactXP構建于React.js和React Native之上,目標是跨平臺,而React Native for Web目標是Web平臺。

但事實上微軟的這個理念也并不新鮮,淘寶FED后來又在React Web的基礎上弄出了Rax項目,這個項目野心更大,不但要跨平臺,而且將RN、Weex、Node.js視為容器,Rax的目標還要能夠跨容器,這個更厲害。

React Native for Web項目: https://github.com/necolas/react-native-web

React Web項目:https://github.com/taobaofed/react-web

Rax項目:https://github.com/alibaba/rax

  微軟發(fā)布ReactXP意味著放棄Xamarin嗎?

前不久微軟發(fā)布Visual Studio時,將支持React Native for iOS作為其重要特性。微軟也一直是React社區(qū)的重要參與者,之前提供了React Native的熱更新工具CodePush,也一直將支持React開發(fā)作為重要目標,這種熱心姿態(tài)幾乎讓人忘記微軟還有自己的跨平臺開發(fā)工具Xamarin.

在文檔里,ReactXP與Xamarin進行了一波商業(yè)互吹,并且說兩者的目的并不相同,一個給C#開發(fā)者使用,一個給前端開發(fā)者使用。

從文檔看不出微軟對Xamarin的態(tài)度,不過綜觀微軟的動作,Xamarin的地位無疑是降低了。

  ReactXP有前途嗎?

ReactXP由Skype團隊開發(fā),想想他們需要支持的平臺之多,瞬間就理解他們?yōu)槭裁匆_發(fā)這個項目。不過,除此之外,ReactXP并未有更多的采用者。

從目前來看,ReactXP的賣點在于對Windows平臺的支持,不過這一項還是In Progress,如果以后正式支持的話,開發(fā)Windows應用又多了一個可選的框架。

至于如此廣泛的跨平臺,目前來看有這個需求的并不多,而且ReactXP也并不是唯一答案,在這一點上吸引力不大。

  ReactXP的意義

不是每一件事物都存在值得討論的意義,不過ReactXP作為React生態(tài)里的最新一員,可以說稍稍拓展了React的邊界,這就是它的意義之所在。

在之前,React的跨端,是由各種平臺的Native延伸框架支持的,每多一個平臺就要開發(fā)一個Native,開發(fā)者又要重新寫一遍,這很不環(huán)保。ReactXP則讓我們看到了大一統(tǒng)的可能,未來如果平臺有變化,或者出現(xiàn)新的平臺,不需要開發(fā)者動手,臟活全讓框架開發(fā)者給干了,豈不是美滋滋。

當然,這個理想過于美妙,現(xiàn)實肯定會有各種坑,也一定會伴隨著各種爭論,開發(fā)者根據(jù)自己的需要,權衡利弊,選擇最適合自己的工具就好。

活動推薦:

由InfoQ主辦的第二屆GMTC全球移動技術大會開始報名了!大會將于6月9-10日在北京舉行。本屆大會,我們將探討智能時代的大前端,在動態(tài)化、React Native等逐漸流行的現(xiàn)在,移動和前端的融合將會發(fā)生怎樣的變化?點擊閱讀原文進入大會官網(wǎng),現(xiàn)在報名享8折優(yōu)惠!