这是一个非常主观的问题/答案,因为它取决于你想要做多少工作。首先,在Ionic / Angular应用程序中,您基本上同时制作了相同的Web版本(即混合应用程序)。性能可能会成为严重问题,具体取决于您正在做什么。简单的屏幕不会有太大问题;大量数据将引入更大的性能问题。此外,屏幕布局可能会导致最大的问题,因为您基本上是在为一个小型Web浏览器编写代码,该浏览器基于每个设备和运行其上的操作系统具有完全不同的屏幕分辨率。如果您需要更接近本机性能,则可以采取一些措施使Ionic更快(例如使用CrossWalk),并且总体上可以生成一个体面的Web /混合应用程序。但是,混合应用程序很可能永远不会像本机应用程序一样拥有任何接近的本机性能,也不会实际上像本机应用程序那样运行,因为它仍然是在浏览器中运行的Web应用程序,试图像本机应用程序一样运行。
现在,如果您正在寻找本地性能和/或在设备上执行本地操作的能力,则使用NativeScript可能是更好的选择。您可以获得本地性能,并访问所有本地控件(例如,真正的ListView可以处理成千上万个复杂项而不会减速)-但代价是您必须为应用程序创建两个单独的屏幕和单独的CSS。
如果您使用Angular或VueJS,实际逻辑可以在NativeScript和Web应用程序之间共享。现在有几种出色的方法可以做到这一点,如
xPlat(Angular代码共享平台)。但是,在所有这些方法中,屏幕生成仍然不同。因此,对于您的Web组件/屏幕,您可能有一个Web
mycomponent.html
->
<div>{{somevalue}}</div>
,而在NativeScript Angular中,
mycomponent.html
->
<Label text="{{somevalue}}"></Label>
。因此,您需要更多的前期工作来创建两个单独的屏幕布局文件。这可能看起来像一个问题;但实际上,这使您可以为手机和/或平板电脑屏幕更好地布置本机移动版本。这也打开了其他选项,例如在NativeScript布局中实时访问相机以及在HTML版本中上传图像文件按钮。
作为一个曾经使用过这两种技术的人,我坚定地支持NativeScript用于我所有的新项目;但对于一些人来说,仍然有一些有效的用例可以使用Ionic/Phonegap/Cordova。如果应用程序已经是基于Web的和/或没有真正需要任何复杂的视图和/或显示大量数据,那么这种情况仍然存在。事实上,nStudio提供的开源
xPlat平台支持Ionic和NativeScript目标。因此,您可以在所有支持的平台之间共享代码,并在任何时候为您的公司做出最佳选择。
例如,也许你开始使用Ionic/Web构建,因为它们基本上是相同的。随着xPlat代码共享的发展,当您最终拥有额外的人力/时间和/或需要更好的性能时,您可以轻松地将应用程序的移动部分逐步转移到Nativescript上。
请注意,NativeScript与Angular允许代码共享;此外,如果您是VueJS的铁杆粉丝,NativeScript与VueJS也允许代码共享。因此,根据您的公司已经使用的内容,有两种优秀的方式可以在您的网站和NativeScript应用程序之间进行代码共享,同时保持移动应用程序的本机性能。