当前位置: 首页 > 知识库问答 >
问题:

混合应用程序-Ionic vs NativeScript

韩欣怿
2023-03-14

我在移动领域已经有一段时间了,我们已经有了原生的Android和iOS应用程序。现在我们公司正计划加强我们的移动网站,我们的团队已经选择Angular 2 TypeScript Ionic 2。我们非常困难地完成了我们在爱奥尼亚的注册表格开发。现在我了解了NativeScript,它可以在不使用webview的情况下开发混合应用程序,而且由于它使用了本机UI组件,人们说它的外观

我有点困惑选择一个1。Angular TypeScript Ionic(html、js、css)或2。Angular TypeScript NativeScript(xml、js、css)

此外我们公司的长期计划是保持一个单一的来源为iOSAndroid和移动网站

请帮助我。

谢谢

共有3个答案

姜德泽
2023-03-14

不要将Nativescript与混合应用程序混合使用,因为混合应用程序是使用webview(如Ionic)的应用程序,Nativescript是原生应用程序。两种类型的区别之一。

使用Ionic,您可以拥有一个源,因为您对所有三个目标都有相同的视图。

由于Nativescript使用本机元素,因此您必须为浏览器和手机执行两种不同的视图,并在javascript代码之间进行一些更改,因为有些内容不在浏览器的API中,但在本机端,反之亦然。

取决于应用程序的使用目标。

羊舌赞
2023-03-14

有了爱奥尼亚,你可以构建混合应用程序或渐进式网络应用程序。应用程序的结构是用HTML编写的,构建的应用程序使用WebView(类似于应用程序内部的网站)。

使用NativeScript,您可以构建不使用HTML DOM的真正本地应用程序,并且您必须了解目标平台(例如iOS/Android)的UI组件。然而,本地应用程序通常比混合应用程序更快,您可以使用TypeScript/JavaScript代码访问摄像头、触摸屏、日历、电话等硬件功能。

以下是丹亚尔·齐亚(Danyal Zia)的一篇博文摘录。我建议你读完整的一本。

Ionic 2是一个混合移动开发框架……好吧,那么混合开发是什么意思呢?混合应用与应用商店中的任何其他应用一样,它们以相同的方式运行(通过下载和安装),用户交互也类似,事实上,大多数用户几乎没有意识到本机应用和混合应用之间的区别。

混合应用的有趣之处在于,它们托管在使用WebView的本机应用程序中——这是一种无浏览器的网页加载程序,因此您可以通过HTML、XML、CSS等网站语言访问移动功能,如摄像头、联系人、陀螺仪等。

爱奥尼亚2仍然使用WebView(就像之前的爱奥尼亚版本一样),因此您可以在Android活动中编写HTML代码,因此与ReactNative和NativeScript相比,它可能会慢一些(我们将在后面讨论)。您可以在Ionic 2中创建看起来像本机的小部件,但它们仍在本机容器内的WebView中呈现,因此从技术上讲不是本机的。

赞成的意见:

  • 混合Web开发支持。相同的基于代码的可用于开发适用于Android、iOS、Windows Phone和Web的应用程序。
  • 非常快的开发-测试周期。您编写代码并在浏览器上进行测试,无需大量模拟器加载。
  • 允许您在TypeScript中编写代码,使从Angular 2的过渡非常容易。
  • 可以使用相同的语言(TypeScript)为每个平台开发应用程序。
  • 它的插件系统使您可以使用任何类型的设备本机功能。

欺骗:

  • 如果您需要对本机代码使用大量回调,则可能会出现性能问题。
  • 在所有设备中使用相同的UI外观可能会破坏那些喜欢原生UI外观的人。
  • 开发高度先进的图形或高度交互式转换可能是一项复杂的工作。

NativeScript由Telerik开发,允许您使用JavaScript或TypeScript进行开发,因此如果您之前使用过Angular 2,那么您将有一个简单的转换。Telerik之前为混合应用开发了角度紧密集成的剑道UI,但后来他们意识到,为什么不提供真正的跨平台原生体验呢?

使用TypeScript和Angular 2,您可以使用声明式样式非常轻松地为移动应用程序创建组件。声称支持“一次编写,随处运行”,相同的Angular 2代码可以用于它所针对的所有平台的UI。NativeScript是一个真正的跨平台,这意味着100%的原生API访问,它的使命是允许人们为所有平台使用相同的代码库。

与ReactNative不同,NativeScript使用本机UI代码(适用于各自的Android和iOS手机),即使您正在使用TypeScript/JavaScript编写代码!如果我们考虑性能方面,那么NativeScript确实比ReactNative更有优势,因为它使用AngularJS 2结构来创建组件。

NativeScript最好的一点是它是由Telerik开发的,这可以保证它在未来会不断收到新的更新,因为它得到了世界各地专业开发人员的支持。因此,如果您使用的是商业应用程序,您可以比ReactNative更依赖NativeScript,因为ReactNative更开源友好,并且依赖于用户的大量贡献。但是,NativeScript也是开源的。

与ReactNative相比,NativeScript也相当成熟。它已经在2.0版本中,而ReactNative的情况并非如此,它获得新更新的频率较低。NativeScript可以共享比ReactNative多得多的代码,这意味着它将节省您的时间。

赞成的意见:

  • 真正的跨平台支持。为所有受支持的平台开发应用程序的单一代码库

欺骗:

  • 许多插件需要为组件单独下载。并非所有插件都可用或经过验证(即,经过彻底测试
邵繁
2023-03-14

这是一个非常主观的问题/答案,因为它取决于你想做多少工作。:-)

首先,在Ionic/Angular应用程序中,你基本上是在同一时间制作相同的网络版本(即,它是一个混合应用程序)。性能可能是一个严重的问题,这取决于你在做什么。简单的屏幕没那么多;大量数据将带来更大的性能问题。此外,屏幕布局可能会给您带来最大的问题,因为您基本上是在为一个小型web浏览器编写代码,该浏览器根据每个设备及其运行的操作html" target="_blank">系统具有完全不同的屏幕分辨率。如果您需要更接近本地的性能;你可以做一些事情让爱奥尼亚更快(比如使用人行横道),总的来说,你可以在爱奥尼亚生成一个不错的网络/混合应用程序。

然而,混合动力很可能永远不会有任何接近原生的性能,也不会像原生应用程序一样运行,因为它仍然是一个在浏览器中运行的Web应用程序,试图像原生应用程序一样运行。

现在,如果您正在寻找本机性能和/或在设备上执行本机操作的能力,那么使用NativeScript可能是更好的选择。您可以获得本机性能,并可以访问所有本机控件(例如,像real ListView这样的东西,可以处理数千个复杂的项目,而不会减慢速度)——但成本是您必须为应用程序创建两个单独的屏幕和单独的css。

如果使用Angular或VueJS;实际逻辑可以在NativeScript和Web应用程序之间共享。现在有几种很好的方法可以做到这一点,比如xPlat(Angular code Shared platform)。但在所有这些电影中,屏幕的生成仍然是不同的。因此,对于您的web组件/屏幕,您可能有一个webmycomponent。html-

作为一个使用了这两种技术的人,我坚定地支持NativeScript阵营中的所有新项目;但是对于一些人来说,仍然有一些使用Ionic/Phonegap/Cordova的有效用例。如果该应用程序已经基于网络,并且/或者根本不需要显示任何复杂的视图和/或大量数据。事实上,nStudio提供的开源xPlat平台同时支持Ionic和NativeScript目标。因此,您可以在所有受支持的平台之间共享代码,并随时为您的公司做出最佳选择。

例如;也许您从Ionic/Web构建开始,因为总的来说它们基本上是一样的。通过xPlat代码共享,当您最终拥有额外的人力/时间和/或需要更好的性能时,您可以轻松地将应用程序的移动部分阶段为Nativescript。

请注意,NativeScript w/Angular允许代码共享;此外,如果您是VueJS的忠实粉丝,NativeScript w/VueJS也允许代码共享。因此,它们是在您的网站和NativeScript应用程序之间进行代码共享的两种绝佳方式,具体取决于您的公司已经使用的内容,同时保持移动应用程序的本机性能

 类似资料:
  • 我是一名PHP、HTML5、CSS3、Javascript、Jquery、Angular的全栈开发人员,热衷于学习任何新技术 现在,我有了一个混合移动应用程序项目(更简单,只需少量的curd操作和web服务),而且它还将是web应用程序,我需要尽快交付。所以我的问题是为正确的工作选择正确的工具 混合应用程序可以使用 平台:Phonegap或cordova,根据我的理解,cordova是Phoneg

  • 执行测试脚本后,我看到控制台“驱动程序null”错误 剧本: 如果我错过了什么,有人能帮忙吗。谢谢,

  • 混合应用 It's possible to connect infinite count of microservices to your existing Nest web application. 可能会在你现有的Nest web应用程序中上连接无数微服务。 Example: 示例: const app = NestFactory.create(ApplicationModule); cons

  • 我只是在iPhone模拟器上安装了Appium 1.3.6来测试我的混合cordova iOS应用程序。能够找到按钮元素及其文本,宽度,高度。但是click()不工作。但是我得到了200成功的响应为click。请查看下面的appium日志。

  • 问题内容: 由于fxml- files使用Controller类来处理事件,因此如何混淆JavaFX应用程序?当混淆的conntroller类具有不同的名称和路径时,fxml文件将找不到它们。 混淆后编辑fxml文件不是我想要的解决方案。 还有其他选择吗? 问题答案: 没有意义重塑轮子; 快速的google搜索产生了这个网站。 它使用Proguard混淆器。

  • 我有一个Spring MVC(不是WebFlux)应用程序,它使用WebFlux项目中的类。除了与相关的代码之外,应用程序中的所有现有代码都是基于的异步代码,对JPA的阻塞调用通常是这样进行的: 但是,对于,我不再确定如何根据返回的结果调用JPA。例如: 不接受执行器。它是否在自己的调度器线程上运行? 我听说在Spring MVC应用程序中使用反应式也会带来性能优势。但是在我的例子中,我已经在整个