昨天,微软在Github上发布了一个新的开源项目:ReactXP,吸引了不是前端和移动开发者的关注。
Github链接:https://github.com/microsoft/reactxp
项目官网:https://microsoft.github.io/reactxp/
从名字来看,它是基于React框架的,官网上微软称之为跨平台App开发工具库,并罗列了它的主要特性,包括:
简单来说,ReactXP为React.js和React Native增加了一个中间层,让React Web应用的API与React Native兼容。
在官网的文档里,官方团队进一步解释了围观群众可能疑惑的一些问题。
官方解释说,ReactXP构建于React Native之上,提供几乎与RN相同的Web版本API,但ReactXP并不是RN的子集或超集。
ReactXP最重要的特点是它的API的一致性,在某些情况下,平台之间的实现不同,API会在一些平台能使用,在另一些平台则是无操作(但能被调用),ReactXP尽可能的不让用户去关心平台区别。
使用ReactXP能过直接调用RN或React DOM,但这时需要根据条件判断平台来进行相应的操作。
如果关心React发展的同学可能发现,微软的这个东西怎么似乎见过。不错,早在15年,淘宝FED就推出了一个React Web项目,使用React Native兼容的API开发Web应用。后来Twitter也推出了一个React Native for Web项目,与前者目标相似,不过在国外这个更为知名。
微软解释了ReactXP和React Native for Web的不同。ReactXP只包含能够跨平台的API和组件,它的目标之一是让开发者使用自己喜欢的环境开发应用,并且有信心让应用跑在不同的平台上而不用过多的担心兼容问题。ReactXP构建于React.js和React Native之上,目标是跨平台,而React Native for Web目标是Web平台。
但事实上微软的这个理念也并不新鲜,淘宝FED后来又在React Web的基础上弄出了Rax项目,这个项目野心更大,不但要跨平台,而且将RN、Weex、Node.js视为容器,Rax的目标还要能够跨容器,这个更厉害。
微软发布ReactXP意味着放弃Xamarin吗?
前不久微软发布Visual Studio时,将支持React Native for iOS作为其重要特性。微软也一直是React社区的重要参与者,之前提供了React Native的热更新工具CodePush,也一直将支持React开发作为重要目标,这种热心姿态几乎让人忘记微软还有自己的跨平台开发工具Xamarin.
在文档里,ReactXP与Xamarin进行了一波商业互吹,并且说两者的目的并不相同,一个给C#开发者使用,一个给前端开发者使用。
从文档看不出微软对Xamarin的态度,不过综观微软的动作,Xamarin的地位无疑是降低了。
ReactXP由Skype团队开发,想想他们需要支持的平台之多,瞬间就理解他们为什么要开发这个项目。不过,除此之外,ReactXP并未有更多的采用者。
从目前来看,ReactXP的卖点在于对Windows平台的支持,不过这一项还是In Progress,如果以后正式支持的话,开发Windows应用又多了一个可选的框架。
至于如此广泛的跨平台,目前来看有这个需求的并不多,而且ReactXP也并不是唯一答案,在这一点上吸引力不大。
不是每一件事物都存在值得讨论的意义,不过ReactXP作为React生态里的最新一员,可以说稍稍拓展了React的边界,这就是它的意义之所在。
在之前,React的跨端,是由各种平台的Native延伸框架支持的,每多一个平台就要开发一个Native,开发者又要重新写一遍,这很不环保。ReactXP则让我们看到了大一统的可能,未来如果平台有变化,或者出现新的平台,不需要开发者动手,脏活全让框架开发者给干了,岂不是美滋滋。
当然,这个理想过于美妙,现实肯定会有各种坑,也一定会伴随着各种争论,开发者根据自己的需要,权衡利弊,选择最适合自己的工具就好。
活动推荐:
由InfoQ主办的第二届GMTC全球移动技术大会开始报名了!大会将于6月9-10日在北京举行。本届大会,我们将探讨智能时代的大前端,在动态化、React Native等逐渐流行的现在,移动和前端的融合将会发生怎样的变化?点击阅读原文进入大会官网,现在报名享8折优惠!