React Native及其在微软跨平台开发中的应用原因

原文信息: 查看原文查看原文

React Native and why Microsoft uses it for its own cross-platform development

- Tim Anderson

采访: 尽管微软拥有自己的自家框架,但它仍然是React Native跨平台开发的最大用户之一。

在本周的QCon伦敦上,微软高级软件工程师兼React Native维护者Lorenzo Sciandra向DevClass谈到了为何微软会选择这种跨平台开发方法,尽管已有.NET MAUI(多平台应用UI)等替代品,以及对于Office采用跨平台C++的长期投资。

微软的Lorenzo Sciandra在QCon伦敦

React Native的应用示例包括Microsoft Office、Outlook、Teams、Xbox、Skype和Xbox上的Microsoft Store。这并不意味着这些应用程序的整体都使用React Native,因为公司广泛使用Sciandra所说的“褐地开发”技术,通过React Native来扩展现有代码库的新功能。它还被用于Copilot的各种方式,Sciandra表示这是一个“巨大的成功”,但“今天我只是要提一下,今年晚些时候会有更多细节”。

微软何时开始使用React Native?Sciandra告诉DevClass:“有点复杂。公司有不同的部门,但它们几乎在React Native问世时立即开始使用,大约是2015-2016年。” “Skype是最早投资的应用之一,类似地,在Office和Windows组织中,他们立即开始合作。随着时间推移,这些不同的努力逐渐发展成了不同组织的更大投资,现在Xbox也大量投资于这个平台。我们有React Native Windows和React Native macOS平台,每个人都可以在开源中使用。这需要与Meta以及亚马逊等其他公司进行大量协作,而我主要做的一件事是确保这些公司之间的协作都能协调一致,以使这个平台变得更好。”

对于微软来说,React Native的吸引力在于什么?Sciandra说:“首先是JavaScript的可雇佣性。” “你有最大的人才库可以挖掘。” 他表示,其他语言如C++或C#“要复杂得多,更加专业”。另一个原因是我们所有应用都有Web版本……其中大多数都使用React作为关键组件之一,因此提供React Native作为选项允许在React领域进行集中投资。

使用React Native进行褐地开发的能力也很关键。“这不是一个全有或全无的选择。其他跨平台解决方案存在,但通常你需要使用该解决方案编写所有内容。你需要从头开始。通过React Native,你可以在现有项目之上添加这个层,并且可以更轻松地尝试只是一个屏幕,”他告诉我们。

在实践中,是否使用TypeScript而不是JavaScript?Sciandra表示:“我认为几乎每个使用React Native的人都使用TypeScript。” JavaScript的普及仍然是一个优势。“有着庞大的社区,你可以利用庞大的库集合,”他说。

React Native的另一个特点是它使用本地操作系统控件,而不是像Google的Flutter这样的框架通常会自行绘制其控件。“这意味着运行应用程序的操作系统知道发生了什么,”Sciandra告诉我们。这对导航和优化以及确保原生外观和感觉都有好处。

Sciandra还公开了使用React Native所涉及的一些权衡。其中最大的之一是“这个领域现在是多么活跃和动态,”他说。 “需要跟上像Meta这样的公司,每个提交都在几小时内生效……这是其中一个主要的复杂性。”他的工作之一是与Meta等人合作,“确保发布是可靠的、稳定的和可预测的。”

React Native是开源的,但Android和iOS的存储库由Facebook管理,而Windows和macOS的存储库由微软管理。“这意味着我们需要跟上代码库,”Sciandra说道。

未来变化将会很多。Meta一直在重新设计核心内部结构,目前仍然被指定为实验性,但它将成为默认设置。这意味着使用React Native意味着要随时准备根据框架的更新频繁地重构代码。

React Native与其他方法(如Electron,使用Web视图,也使用JavaScript或TypeScript创建桌面应用程序)相比如何?Sciandra告诉我们,Meta将Messenger从Electron迁移到了Windows和macOS上的React Native。“他们在性能和二进制大小方面都看到了非常显著的改进。”

然而,使用Web视图使得在Web和桌面或移动端之间轻松共享代码变得容易,而在React Native中这并不是那么好。“React和React Native是两个独立的项目的原因是React Native需要一些类似React的自定义代码,但你不能直接使用React代码,”Sciandra说道。“例如,对于任何组件库或设计系统,你不能轻松共享。你需要为React Native构建自定义组件。”

然而,这可能会改变。React Strict DOM正在开发中,“这里的

想法是,如果我们找到一种方法让为Web编写的UI直接在React Native中工作,会怎样,”Sciandra说。

Sciandra的演讲,针对一些持怀疑态度的QCon观众,题为“微软如何利用React Native获取战略优势”。即使微软的开发者营销对于跨平台——它说的与它做的——更专注于.NET MAUI,但这个话题对于对使用本地控件进行跨平台开发感兴趣的开发者来说也是值得关注的。

分享于 2024-04-21

访问量 54

预览图片