NativeScript vs. React Native

1,670 阅读9分钟

使用JavaScript构建跨平台的移动应用,对于JavaScript开发者来说,已经改变了游戏规则。开发者不仅可以构建在网络上运行的应用程序,而且还可以为安卓和iOS构建用JavaScript运行的本地应用程序。

像React Native和NativeScript这样的框架使得用JavaScript构建优雅、高效、可生产、可扩展的移动应用变得容易。但是,哪一个对开发者来说更好呢?

在我们比较这两种技术之前,我们必须了解这两种技术所独特解决的问题和它们的愿景。

什么是NativeScript和React Native?

NativeScript的愿景是"通过直接使用平台API来解放你的开发,而不需要离开你[喜爱]的JavaScript"。将NativeScript视为在框架无关的团队中用JavaScript构建跨平台移动应用时的首选工具。

因此,无论你选择的JavaScript框架是Vue、React、Svelte、Angular,甚至是Vanilla JavaScript,NativeScript都能覆盖它

另一方面,React Native是Facebook创建的一个JavaScript库,它使用React构建原生移动应用,这意味着我们不能使用Vue、Angular或其他任何JavaScript框架用React Native构建移动应用。

这并不意味着App或Play商店中的所有React Native应用都是用纯JavaScript构建的,因为有些情况下,开发者必须用Swift/Objective-C或Java/Kotlin编写原生代码,以访问默认情况下JavaScript无法使用的Native API。

考虑到这一点,让我们看看React Native与NativeScript的比较,在这篇文章结束时,你应该能够在用JavaScript构建移动应用时为你或你的团队选择最佳框架。

社区支持

社区支持是选择正确框架时需要考虑的最重要因素之一。这似乎令人惊讶,但NativeScript的历史比React Native更长。NativeScript的首次发布是在2014年,React Native最初是在2015年3月26日发布的。

虽然一年的差距似乎是一个优势,但React Native的增长和采用率要比NativeScript高得多。截至这个发布日期,React Native在npm上的每周下载量约为533k,而NativeScript的每周下载量仅为7k以下

说到贡献者,React Native在GitHub上有超过2200个贡献者,而NativeScript有208个贡献者。而且,GitHub上超过3.5万名开发者使用NativeScript,而React Native只有不到72万名开发者使用

这个巨大的差距展示了开发者社区对React Native的广泛采用,并影响了第三方库的数量、错误修复和StackOverflow上的答案。

社区支持也很重要,因为它决定了可用于学习每个框架的资源数量,如博客文章、付费和免费课程、电子书和YouTube视频。

说到社区支持,React Native赢得了最受欢迎的称号。

开始学习

建立一个React Native项目

对于刚接触移动开发的网络开发者来说,开始并建立一个React Native项目可能是一个挑战。然而,多亏了Expo,开始使用React Native是很容易的。

虽然Expo确实有一些限制,但这些限制并不影响使用Expo构建的大多数应用程序。

开发者还可以使用ExpoGo,这是一个由Expo团队建立的移动应用,通过扫描QR码在实体安卓和iOS设备上运行React Native,在实体设备上安装一个应用。

对于来自React背景的开发者来说,开始使用React Native比较容易。但是,如果你选择的主要JavaScript是Angular,例如,学习曲线可能很陡峭。

设置NativeScript项目

启动NativeScript应用程序时,使用官方模板可以相当容易地开始使用NativeScript。你可以通过在终端运行以下命令来初始化一个已经设置好的NativeScript应用程序

create myNsApp --template @nativescript/template-drawer-navigation

NativeScript的优点是它与框架无关,这意味着您可以使用Angular、Vue、Svelte、React甚至Vanilla JavaScript等JavaScript框架来构建NativeScript移动应用。

然而,与其他框架相比,NativeScript与Angular的同步性最好,因为NativeScript团队与谷歌合作,确保这两个工具在构建移动应用时无缝工作。

通过使用NativeScript Playground应用程序,你可以在实体Android和iOS设备上运行你的应用程序,就像Expo Go一样。

总的来说,Expo Go应用比NativeScript playground提供了更好的开发者体验,所以这对寻求更简单设置体验的开发者来说是个利好。

热重载

热重载功能在移动应用开发中非常重要,因为它极大地提高了开发者的工作效率。没有哪个开发者愿意在开发阶段等待超过一分钟的时间来查看注入到他们的移动应用中的每一个小变化。

在本节中,我们将看到React Native和NativeScript如何处理热重载。

React Native快速刷新

React Native的0.61版本,该团队宣布了一项名为快速刷新的功能。快速刷新统一了之前React Native版本中已经存在的实时重载功能和热重载功能。

启用快速刷新功能后,你可以对你的应用程序进行修改,并几乎即时看到修改。默认情况下,该功能在功能组件中保留了本地状态,但在类组件中没有。

你也可以在你的React Native组件中使用// @refresh reset 指令手动调用快速刷新,强制组件重新安装。

NativeScript热模块替换

NativeScript的热模块替换(HMR)功能在NativeScript 5.3中发布。它支持Visual Studio Code调试,让开发者在HMR功能仍在运行时也能使用调试器。

它还完全支持SASS文件,这意味着当你在应用中对.scss.sass 文件进行修改时,它们会在开发过程中反映在你的应用中;当从NativeScript应用目录中添加或删除一个文件时,HMR就会发挥作用。

.vue 文件中也有对脚本变化的支持,但在Vue中使用TypeScript时,它有一个限制,而在开箱即用的NativeScript Angular项目中,有完全的HMR支持,不需要额外的配置。

HMR和快速刷新的性能相似,而且都有聪明的内置功能,如NativeScript中Visual Studio Code的调试和React Native的错误恢复

本地API

React Native APIs

React Native有一些基本的开箱即用的模块,但在有些情况下,你可能需要React Native还没有对应的模块的本地功能。在这种情况下,你必须编写本地模块来与Native APIs通信。

实现这一点需要特殊的桥接,这需要一定程度的本地开发的专业知识。然而,以React Native生态系统的规模,你很可能会在GitHub或npm上找到一个现有的本地模块。

NativeScript APIs

在NativeScript中访问本地平台API是NativeScript最重要的功能。开发人员可以从JavaScript调用平台API,而不是用Objective-C或Kotlin编写本地代码。

这是NativeScript比React Native更有优势的地方,因为JavaScript开发人员不需要特定平台语言的专业知识就可以使用Native APIs。

React Native和NativeScript的性能

NativeScript应用程序通常较慢,因为该框架采用了单线程方法来访问本地设备API。

与NativeScript不同,React Native应用采用多线程模式,JavaScript和应用的界面在不同的线程上运行。因此,当构建一个性能是关键因素的移动应用时,React Native是你最好的选择。

React Native还提供更快的UI渲染,因为它使用虚拟DOM来更新应用UI,与React类似。

NativeScript和React Native文档

NativeScript的文档很容易理解,它对如何实现动画手势HTTP请求代码共享等方面有一些非常棒的说明。

而且,对于NativeScript与SvelteVue的具体使用案例,有单独的文档。但大多数时候,开发者必须在官方文档之外学习NativeScript生态系统中的工作方式。

React Native拥有比NativeScript更成熟的生态系统,随之而来的是对文档的期望,因为跨平台移动应用开发的初学者和专家都会访问它。

然而,虽然文档是平易近人的,但它缺乏细节,这可能使初学者对一些概念不清楚。

用Expo构建React Native应用,并使用Expo的文档,可以简化作为初学者构建功能性React Native应用的React Native文档的工作。

这两个框架都没有最好的文档,使用这两个框架的开发者通常必须超越官方文档来学习框架的所有方面。

使用NativeScript和React Native的公司

React Native目前已被FacebookBloombergCoinbaseDiscordTesla等顶级品牌和公司用于生产。这证明了React Native已经变得非常大和流行。

Facebook市场也是用React Native构建的,证明了如果你有一个现有的用本地语言编写的移动应用,你可以逐步采用React Native来构建你的移动应用的不同部分。

尽管React Native在这里占据了焦点,但这并不意味着NativeScript不能像React Native那样为使用它的公司解决商业问题。看看这里用NativeScript构建的令人敬畏的应用程序,就会发现它可以构建出可以投入生产的移动应用程序。

总结

作为一名网络开发者,用JavaScript构建移动应用是一种很棒的体验,因为这种语言可以在网络浏览器上运行,为Android和iOS构建原生应用。在所有用于构建跨平台应用程序的JavaScript框架中,React Native和NativeScript处于领先地位。

在这篇文章中,我们已经介绍了每个框架的独特之处以及它们的发展程度。选择哪种框架最终取决于移动应用的要求、性能成本、首选的JavaScript框架、之前对移动应用开发的了解以及所需的Native API。

从上述角度来看,在为你的下一个项目选择跨平台移动应用框架时,你应该能够做出明智的决定。

欢迎发表评论,让我知道你对这篇文章的看法。你也可以在TwitterLinkedIn上找到我。谢谢您的阅读!

The postNativeScript vs. React Nativeappeared first onLogRocket Blog.