ReactNative和NativeScript之间的主要区别是什么?


回答 1:
免责声明:此答案并非旨在证明一个团队比另一个团队更好,我不想批评两个团队的出色工作,而是列出NativeScript和React Native之间的差异。

这两个框架都是新一代跨平台移动框架的一部分,它们不使用浏览器将其打包到本机应用程序中。它们是使用本机OS的本机UI组件来“自动”执行的。这对应用的用户体验有非常积极的影响。它还允许更快的应用程序实施,因为该应用程序所需的最终修饰量要比使用任何基于浏览器的PhoneGap的应用程序所需的工作量小得多。

现在到您的问题。有很多差异-技术和非技术方面的差异。

在非技术方面

NativeScript由Telerik(一家进步公司)提供-这是一家非常著名的开发公司,而NativeScript框架是其核心业务的一部分。 ReactNative是从Facebook构建的,众所周知,它不是一家开发工具公司。为什么这很重要?当您依赖Telerik时,您可以选择获得支持(开发人员或生产人员),这对于大多数严肃的软件商店都是必需的。另外,如果您在企业中工作,则需要一定的工具,服务和解决方案堆栈。例如,代码加密和安全性。您可以通过Telerik / NativeScript获得所有这些信息,但这并不是Facebook / React的优先事项。

还值得注意的是,NativeScript已经是2.0版,而ReactNative仍处于成熟阶段。在选择合适的框架评估风险时,也应计算此值。使用NativeScript,您可以获得适用于iOS和Android的整个堆栈。对于RN而言,在今天,跨平台的故事仍然有很多空白。这些差距每天都在填补,据FB团队称,这是RN团队在未来一年中的主要优先事项之一。还有许多可用于NativeScript的付费生产力工具,服务和组件。在决定构建任何商业软件时使用哪个框架时,这起着重要作用。

最后的非技术性因素是社区规模。这两个框架都是开源的和免费的。 ReactNative是React.js的扩展,因此您可以假设整个react.js社区都将赌注押在它上面。另一方面,NativeScript受Google支持,并以AngularJS社区为目标。两个社区都非常庞大(数以百万计的开发人员),并且这两个框架都很好用。这在风险评估中也起着重要作用。

现在在技术方面

大量差异。 ReactNative和NativeScript所采用的方法截然不同,这会影响开发人员的体验以及使用和重用本机库的能力。两者都在iO和Android上都提供了非常好的性能。大多数情况下为60fps。在这两个框架中仍然需要完善一些方案,但即使到今天,它们仍然可以充当真正的本机应用程序。

ReactNative架构

说到架构-我上面提到的ReactNative是React.JS的扩展,因此它们遵循与ReactJS中相同的原则来更新UI。例如。使用虚拟DOM。简而言之-他们正在计算需要在_background thread_上对UI进行的更改,并分批应用这些更改。他们在后台线程上执行此操作的事实有其优点和缺点。当然,积极的一面是未触摸UI线程(这导致UI响应非常快),但从消极的一面看,这限制了它们与基础本机OS通信_fast_的能力。这意味着,如果您有一个要对本机OS进行大量调用的组件,则该应用程序将非常缓慢,非常缓慢。好消息是大多数情况下都不需要这样做。

不好的事情是,如果您需要使用自定义的本机组件或本机API,则需要了解ObjC for iOS和Java for Android才能访问这些组件和API。对于许多JS开发人员而言,这可能会破坏交易。您无需了解ObjC / Java即可在NativeScript中实现此目的,请阅读下文。

 在ReactNative网站上有一篇很好的文章详细解释了这一点,他们在那儿提到他们打算改变这种架构,因此出于这个原因在UI线程上做了更多的工作。这是文章的引文:

我认为我们不需要或不想彻底改变我们的线程模型,例如通过将所有内容移到主线程上,但是我们确实需要进行一些漂亮的核心更改。

我建议在这里阅读文章。

NativeScript体系结构

NativeScript核心团队开发人员在这里采用了更为经典的方法。他们正在使用UI线程执行与大多数流行框架(Android,Windows等)所使用的模型相同的模型的UI。这使开发应用程序的方式更为简单-作为开发人员,您始终可以访问UI您的应用程序树。值得注意的是,如果您需要在后台线程上执行某些操作,这也是可能的。实际上,一些更核心的组件(例如http,image,sql lite数据库)实际上在后台线程上执行许多操作,以减少UI线程上的负载。这种方法的巨大好处是允许您直接从JavaScript访问_any_本机API。

请阅读这篇文章,深入解释NativeScript线程体系结构-http://developer.telerik.com/fea ....

基本上,您可以访问完整的本机API,这有很多好处,尤其是当您需要长期支持该应用程序时。没有用于本机API的包装程序,这使整个体验更加简单,并且不易出错。您可以从字面上编写类似com.android.button.init()之类的东西。这还具有直接使用整个第三方本地库堆栈而无需进行任何修改的好处。这样可以更轻松地使用和创建扩展。当前,社区提供了220多个扩展。这种方法的另一个好处是,通过使用CSS和JavaScript在NativeScript中创建的动画将更加流畅地运行,因为它们是在UI线程上执行的。

正如我上面提到的,NativeScript由Google支持,因此,如果您是Angular开发人员,那么使用NativeScript时您会感到宾至如归-支持整个Angular 2 API,并且可以在NativeScript和Web应用程序之间重用代码。

上述架构允许NativeScript为新OS版本提供0天支持。当前,NativeScript支持仍处于Alpha阶段的Android N版本。

用于执行应用程序代码的JS引擎

值得一提的是,两个框架都在利用现有的JavaScript引擎在运行时执行JavaScript代码。 ReactNative在iOS和Android上使用JavaScriptCore。 NativeScript在Android上使用V8,在iOS上使用JavaScriptCore。最近,Microsoft在ReactNative中增加了对Windows Universal的支持,并正在使用自己的Chakra JS引擎。我不确定如何将其与其他ReactNative代码合并,因为它(我怀疑)将暗示对该工具进行了大量更改-不同的调试器,探查器,仅举几例。

使用标准

软件变化很大,因此在选择适合您方案的框架时,依靠标准来降低风险很重要。

两种框架都使用符合标准的ECMAScript代码,该代码允许在Web和移动应用程序之间重复使用代码,从而在使用它们时获得非常好的投资回报。

NativeScript的优点是它还使用符合标准的CSS声明。这允许在移动和Web应用之间进行更大的技能/代码重用故事。它甚至支持使用CSS关键帧描述动画。所有这些都归结为本地代码,因此CSS声明被转换为本地经验。了解如何使用CSS编写本地动画。

UI声明

在这两个框架中,您都可以使用声明性语法来描述应用程序的UI。 ReactNative使用在React中找到的表示法将UI声明内联到单个文件中。 NativeScript再次使用一种更为经典的方法,即允许您使用代码构建UI或通过用于UI实现的单独文件来构建UI,从而允许您使用经典的MVC / MVVM模式。我不会说哪个更好-这是个人品味的问题。对我来说,使用MVVM可以更好地将UI和代码分开,但这是我经常写的内容,因此我有偏见。

如果您知道NativeScript中的CSS将使您更容易使用外部样式表或嵌入式样式来设置应用程序样式。 ReactNative在基于JSON声明的样式中使用自己的符号。再次类似于CSS,但有所不同。

语言支持

ReactNative和NativeScript都使用现代JavaScript。他们都支持Babel,以便使用最新和最强大的JS。

随着NativeScript越来越成熟,它在此处还有更多选择。 NativeScript与TypeScript紧密集成(工具,IDE等)。这为Angular 2提供了额外的集成,并提高了生产率,并使对这些应用程序的长期支持变得更加容易。

开发人员经验,调试

两种框架都提供了以快速方式开发应用程序的功能-它们都提供了热重载功能-这是一种无需重新加载应用程序即可在设备上立即查看代码更改的功能(在大多数情况下)。

就开发人员的经验和IDE而言,由于整个应用程序堆栈都是JavaScript,因此您可以使用任何可用的IDE。 Facebook正在开发自己的IDE,在撰写本文时仍未发布,NativeScript正在将Visual Studio Code提升为推荐的编辑器。微软为其VS Code调试器提供了NativeScript和ReactNative的实现。

测试中

由于它是所有符合标准的JavaScript,因此您可以使用任何可用的工具编写单元测试。这两个框架都支持最流行的测试框架,例如Karma,Jasmine,Mocha。

对于功能测试,由于UI完全是本机的,因此您可以使用任何与本机框架(如Appium)一起使用的测试工具。

了解如何在NativeScript中编写测试。在ReactNative中。

性能

正如我上面在性能方面多次提到的那样,您将对这两个框架感到满意。这是对著名的PhoneGap应用程序的巨大改进。最终的应用程序与真正的本机应用程序没有什么不同。真正的本机UI组件的使用对于这两个框架都是巨大的好处。

两种框架在iOS上均具有出色的性能-无论是在加载时间方面(两者都少于一秒)还是在运行时FPS(大多数情况下为60fps)方面。

在Android上,性能仍然不错,但是由于底层的本机OS体系结构,总体性能不如在iOS上好。加载时间和运行时行为没有像iOS那样完美。但这对纯本机应用程序也有效,因此不要对NativeScript和ReactNative太挑剔。与NativeScript相比,ReactNative在Android上的加载时间略短(更快)(1.4s与2.2s)。 NativeScript团队通过引入内存堆快照来解决此问题,但是此功能仍处于试验阶段。

真实应用

对于某些真实的应用程序,您可以看到以下NativeScript厨房水槽应用程序的链接:

在Android上-> https://play.google.com/store/ap ...

在iOS上-> https://itunes.apple.com/bg/app / ...

或者,您可以从NativeScript展示库中检查应用程序。

对于ReactNative,我不知道任何厨房水槽应用程序,但是您可以检查任何展示柜应用程序。确保检查Facebook完成的应用程序以实现最佳实施。

在结束时

就我个人而言,主要的决策是基于您现有的技能-如果您具有Angular技能,只需使用NativeScript,如果您是React开发人员,您会发现ReactNative更熟悉和易于使用。如果要实施商业软件,请考虑NativeScript和Angular技能集中提供的支持和服务。如果您需要更多自定义本机UI,则NativeScript将更适合您,因为您不需要了解ObjC或Java就可以使用它们。归根结底,这两个框架都是现代的,并兑现了他们的承诺,这将带来一流的应用程序。

祝您编程愉快,希望以上内容对您有所帮助:)。请随时询问我更多详细信息。当然,这里没有涉及很多事情,但是我可以更进一步地解释以上所有内容。您可以通过[email protected]与我联系。

披露:我是NativeScript的PM,但我尝试保持公正。希望您会喜欢上面的内容。如果您认为有不正确的事实,请告诉我,我们将进行修改!


回答 2:

React Native和NativeScript之间的区别

React Native和NativeScript都是很棒的框架。这两个框架都是新一代跨平台移动框架的一部分,这些框架不使用浏览器将其打包到Native应用中。两个团队所做的工作都很棒,但是这里列出了NativeScript和React Native之间的一些区别。

另请阅读基本的React Native面试问题

本机脚本

反应本机

反应灵敏,乐于助人的社区。

反应灵敏,乐于助人的社区。

没有“实际”生产使用情况

经验证的生产用法。

由一家小公司维护。

由一家大公司维护。

不太受欢迎

流行。

比React Native早

比NativeScript更新


回答 3:

React Native和NativeScript之间的区别

React Native和NativeScript都是很棒的框架。这两个框架都是新一代跨平台移动框架的一部分,这些框架不使用浏览器将其打包到Native应用中。两个团队所做的工作都很棒,但是这里列出了NativeScript和React Native之间的一些区别。

另请阅读基本的React Native面试问题

本机脚本

反应本机

反应灵敏,乐于助人的社区。

反应灵敏,乐于助人的社区。

没有“实际”生产使用情况

经验证的生产用法。

由一家小公司维护。

由一家大公司维护。

不太受欢迎

流行。

比React Native早

比NativeScript更新


回答 4:

React Native和NativeScript之间的区别

React Native和NativeScript都是很棒的框架。这两个框架都是新一代跨平台移动框架的一部分,这些框架不使用浏览器将其打包到Native应用中。两个团队所做的工作都很棒,但是这里列出了NativeScript和React Native之间的一些区别。

另请阅读基本的React Native面试问题

本机脚本

反应本机

反应灵敏,乐于助人的社区。

反应灵敏,乐于助人的社区。

没有“实际”生产使用情况

经验证的生产用法。

由一家小公司维护。

由一家大公司维护。

不太受欢迎

流行。

比React Native早

比NativeScript更新


回答 5:

React Native和NativeScript之间的区别

React Native和NativeScript都是很棒的框架。这两个框架都是新一代跨平台移动框架的一部分,这些框架不使用浏览器将其打包到Native应用中。两个团队所做的工作都很棒,但是这里列出了NativeScript和React Native之间的一些区别。

另请阅读基本的React Native面试问题

本机脚本

反应本机

反应灵敏,乐于助人的社区。

反应灵敏,乐于助人的社区。

没有“实际”生产使用情况

经验证的生产用法。

由一家小公司维护。

由一家大公司维护。

不太受欢迎

流行。

比React Native早

比NativeScript更新


回答 6:

React Native和NativeScript之间的区别

React Native和NativeScript都是很棒的框架。这两个框架都是新一代跨平台移动框架的一部分,这些框架不使用浏览器将其打包到Native应用中。两个团队所做的工作都很棒,但是这里列出了NativeScript和React Native之间的一些区别。

另请阅读基本的React Native面试问题

本机脚本

反应本机

反应灵敏,乐于助人的社区。

反应灵敏,乐于助人的社区。

没有“实际”生产使用情况

经验证的生产用法。

由一家小公司维护。

由一家大公司维护。

不太受欢迎

流行。

比React Native早

比NativeScript更新


回答 7:

React Native和NativeScript之间的区别

React Native和NativeScript都是很棒的框架。这两个框架都是新一代跨平台移动框架的一部分,这些框架不使用浏览器将其打包到Native应用中。两个团队所做的工作都很棒,但是这里列出了NativeScript和React Native之间的一些区别。

另请阅读基本的React Native面试问题

本机脚本

反应本机

反应灵敏,乐于助人的社区。

反应灵敏,乐于助人的社区。

没有“实际”生产使用情况

经验证的生产用法。

由一家小公司维护。

由一家大公司维护。

不太受欢迎

流行。

比React Native早

比NativeScript更新


回答 8:

React Native和NativeScript之间的区别

React Native和NativeScript都是很棒的框架。这两个框架都是新一代跨平台移动框架的一部分,这些框架不使用浏览器将其打包到Native应用中。两个团队所做的工作都很棒,但是这里列出了NativeScript和React Native之间的一些区别。

另请阅读基本的React Native面试问题

本机脚本

反应本机

反应灵敏,乐于助人的社区。

反应灵敏,乐于助人的社区。

没有“实际”生产使用情况

经验证的生产用法。

由一家小公司维护。

由一家大公司维护。

不太受欢迎

流行。

比React Native早

比NativeScript更新