混合应用程序 - 离子与NativeScript

Man*_*ano 48 typescript ionic-framework nativescript angular

我在移动领域已经有一段时间了,我们已经拥有原生的Android和iOS应用程序.现在我们公司正计划加强我们的移动网站,我们的团队选择了Angular 2 + TypeScript + Ionic 2.我们很难完成Ionic + Angular的注册表开发.现在我开始了解NativeScript以开发没有webview的混合应用程序,因为它使用原生UI组件,人们都说应用程序的外观和性能会很好.

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

此外,我们公司的长期计划是为iOS,Android和移动网站维护单一来源

请帮我.

谢谢

Nat*_*ael 41

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

首先,在Ionic/Angular应用程序中,您基本上可以同时创建相同的Web版本(即它的混合应用程序).根据您的工作,性能可能是一个严重的问题.简单的屏幕不是那么多; 大量数据将引入更大的性能问题.此外,屏幕布局可能会引起您最多的问题,因为您基本上编码为一个小型Web浏览器,该浏览器具有完全不同的屏幕分辨率,基于每个设备及其运行的操作系统.如果你需要更接近原生表现; 你可以采取一些措施让Ionic更快(比如使用CrossWalk),总体来说你可以在Ionic中生成一个像样的网络/混合应用程序.

然而,混合物很可能永远不会有本地性能,也不会像Native应用程序那样,因为它仍然是一个在浏览器中运行的Web应用程序,试图像本机应用程序一样运行.

现在,如果您正在寻找Native性能和/或在设备上执行本机操作的能力,那么使用NativeScript可能是更好的选择.您可以获得本机性能,并可以访问所有本机控件(例如可以处理数千个复杂项目但没有减速的真实ListViews) - 但是成本是您必须为您创建两个单独的屏幕并单独的css应用程序.

如果你使用Angular或VueJS; 可以在NativeScript和Web应用程序之间共享实际逻辑.现在有几种很好的方法可以像xPlat(Angular代码共享平台)那样做.但在所有这些屏幕中,屏幕生成仍然不同.因此,对于您的Web组件/屏幕,您可能有一个Web mycomponent.html- > <div>{{somevalue}}</div>和NativeScript Angular mycomponent.html- > <Label text="{{somevalue}}"></Label>.因此,您最终需要在NativeScript中进行更多的前期工作,因为您必须创建两个单独的屏幕布局文件.这似乎是一个问题; 但实际上,这使您可以实际为手机和/或平板电脑屏幕设置更好的原生移动版本.这也打开了其他选项,例如可以在NativeScript布局中实时访问相机,以及html版本中的上传图像文件按钮.

作为使用这两种技术的人,我坚定地参与NativeScript阵营的所有新项目; 但对于某些人来说,仍有一些有效的用例可以使用Ionic/Phonegap/Cordova.如果应用程序已经基于Web,并且/或者没有任何真正需要任何复杂视图和/或大量数据的应用程序.事实上,nStudio提供的开源xPlat平台支持Ionic和NativeScript目标.这样您就可以在所有支持的平台之间进行代码共享,并在所有时间点为您的公司做出最佳选择.

例如; 也许你从Ionic/Web构建开始,因为总体而言它们基本相同.通过xPlat代码共享,您可以轻松地将应用程序的移动部分转换为Nativescript,当您最终拥有额外的人力/时间和/或需要更好的性能时.

请注意带有Angular的NativeScript允许代码共享; 此外,如果你是一个很大的VueJS粉丝,NativeScript w/VueJS也允许代码共享.因此,根据您公司已经使用的内容,同时保持移动应用程序的本机性能,它们是您在网站和NativeScript应用程序之间进行代码共享的两种绝佳方式.

  • 即使你从Ionic2开始,你也可以稍后切换到NativeScript,只要你在服务中包装你的主要逻辑;) (6认同)

Yul*_*ian 34

简短的回答

使用Ionic,您可以构建混合应用程序渐进式Web应用程序.应用程序的结构用HTML编写,构建的应用程序使用WebViews(类似于应用程序内的网站).

使用NativeScript,您正在构建不使用HTML DOM的真正本机应用程序,您必须学习所针对的平台的UI组件(例如iOS/Android).但是,本机应用程序通常比混合应用程序更快,您可以使用TypeScript/JavaScript代码访问相机,触摸,日历,电话等硬件功能.


答案很长

这是Danyal Zia撰写的博客文章的摘录.我建议你阅读完整的一本.

离子(2)

Ionic 2是一个混合移动开发框架 ......好吧,那么混合开发意味着什么呢?混合应用程序就像您可以在应用程序商店中找到的任何其他应用程序一样,它们以相同的方式运行(通过下载和安装它们),并且用户交互类似,事实上,大多数用户很难意识到本机应用程序和混合应用程序之间的区别应用.

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

Ionic 2仍然使用WebView(就像之前的Ionic版本一样),因此您在Android 活动中编写HTML代码,因此与ReactNativeNativeScript相比它可能会更慢(我们稍后会讨论它).您可以在Ionic 2中创建具有原生外观的小部件,但它们仍然在本机容器内的WebView中呈现,因此在技术上不是原生的.

优点:

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

缺点:

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

NativeScript

Telerik开发,NativeScript允许您使用JavaScript或TypeScript进行开发,因此如果您之前使用过Angular 2,那么您将轻松过渡.Telerik以前为混合应用程序开发了严格的Angular集成的Kendo UI,但他们后来意识到,为什么不提供真正的跨平台本机体验呢?

使用TypeScript和Angular 2,您可以使用声明式样式轻松地为移动应用程序创建组件.声称支持"一次编写,随处运行",相同的Angular 2代码可用于所针对的所有平台的UI.NativeScript是一个真正的跨平台,这意味着100%的Native 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更多的代码,这意味着它可以节省您的时间.

优点:

  • 真正的跨平台支持.单一代码库,用于为所有支持的平台开发应用程序.
  • 100%原生API访问.您可以使用TypeScript/JavaScript代码访问相机,触摸,日历,电话等硬件功能.
  • 使用Angular 2,您可以轻松地在应用程序中传输以前的Web组件.
  • 来自Telerik的非常好的支持.

缺点:

  • 需要为组件单独下载许多插件.并非所有插件都可用或经过验证(即经过全面测试).
  • 应用程序大小比ReactNative和Ionic 2大得多.如果您的用户连接速度较慢,那么对您来说可能是个问题.
  • NativeScript中不支持HTML和DOM,因此您需要学习不同的UI组件来构建应用程序的UI.


Mar*_*zay 17

不要将Nativescript与混合应用混合,因为混合应用是使用webview的应用(如Ionic),Nativescript是Native.两种类型之间的区别.

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

使用Nativescript使用本机元素,因此您必须为浏览器和移动设备执行两个不同的视图以及javascript代码之间的一些更改,因为某些内容不在浏览器的API中,而是在本机端,反之亦然.

取决于应用程序的使用目标是什么.