首页 文章

混合应用程序 - 离子与NativeScript

提问于
浏览
34

我在移动领域已经有一段时间了,我们已经拥有原生的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和移动网站维护单一来源

请帮我 .

谢谢

4 回答

  • 28

    如上所述,对于上述优秀答案,迟来要增加业务必须为决策过程提供输入 . 以下是企业必须帮助解答的一些主观问题:

    • 资助/识别开发者资源对项目有何影响?即:我们必须做我们拥有的东西吗?结识新朋友?重新训练?混合与本机解决方案以及是否需要使用现有代码具有重大影响 . 想象一下,本地或前端开发人员或多或少变得冗余的解决方案......

    • 如果UI / UX在移动与Web /响应/混合/ PWA之间相似或不相似,对业务的影响是什么?在本机和Web /响应/混合/ PWA之间访问本机功能(如相机,GPS,通知等)的某些不同功能的影响如何?

    • 跨平台可能有不同的应用程序性能有何影响? (即原生更快)

    • 企业是否评估了每种解决方案的生命和维护成本?

    响应是响应的主要驱动因素(比如grid / flexbox / bootstrap),hybrid(比如Ionic)或native(比如Nativescript,React Native或pure os native) .

    最后,最终的决定是业务和技术驱动因素的结合 .

  • 1

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

    首先,在iONIC / Angular2应用程序中,您基本上可以同时制作相同的Web版本 . 根据您的工作,性能可能是一个严重的问题 . 简单的屏幕不是那么多,数据很多;更大的问题 . 此外,屏幕布局可能会导致一些问题,因为您基本上编码为一个小型Web浏览器,该浏览器具有完全不同的屏幕分辨率,具体取决于哪个设备及其所在的操作系统 . 如果你需要更接近原生表现;有一些事情你可以做的更快(即使用CrossWalk)和整体你可以在iONIC 2中生成一个像样的网络应用程序 . 但很可能它永远不会有任何接近本机性能,也不像本机应用程序因为它仍然是一个试图模仿本机应用程序的Web应用程序 .

    现在,如果您正在寻找Native性能和/或在设备上轻松执行本机操作的能力,那么使用NativeScript / Angular2可能是更好的选择 . 您可以获得本机性能,并可以访问所有本机控件(例如可以处理数千个复杂项目但没有减速的真实ListView) - 但是成本是您必须为您创建两个单独的屏幕并单独的css应用程序 . 可以在NativeScript和Web应用程序之间的NG2中共享实际逻辑;但屏幕生成是不同的,所以对于你的html组件/屏幕,你可能有 mycomponent.html - > <div>{{somevalue}}</div> 和NativeScript mycomponent.xml - > <Label text="{{somevalue}}"></Label> . 因此,您最终需要在NativeScript中进行更多的前期工作,因为您必须创建两个单独的布局文件 . 但是,这使您可以更好地为手机或平板电脑屏幕设置移动版本,和/或其他选项,例如可以访问NS布局中的相机,以及html版本中的上传图像文件按钮 .

    作为使用这两种技术的人,我坚定地参与NativeScript阵营的所有新项目;但是对于某些人来说,如果应用程序是基于Web的,并且没有任何需要任何复杂视图和/或大量数据的显示,那么仍然有一些有效的用例可以使用iONIC / Phonegap / Cordova .

  • 36

    简答

    使用 Ionic ,您正在构建 hybrid appsProgressive Web Apps . 应用程序的结构是用HTML编写的,内置的应用程序使用WebViews(类似于应用程序中的网站) .

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


    答案很长

    这是Danyal Zia的blog post的摘录 . 我建议你阅读完整的一本 .

    离子(2)

    Ionic 2是一个混合移动开发框架......好吧,那么混合开发意味着什么?混合应用程序就像您可以在应用程序商店中找到的任何其他应用程序一样,它们以相同的方式运行(通过下载和安装它们),并且用户交互类似,事实上,大多数用户很难意识到本机应用程序和混合应用程序之间的区别应用 . 关于混合应用程序的有趣之处在于它们托管在使用WebView的本机应用程序中 - 这是一种无浏览器的网页加载程序,因此您可以访问移动功能,例如相机,联系人,陀螺仪等 . 通过网站语言,如HTML,XML,CSS等,Ionic 2仍然使用WebView(就像之前的Ionic版本一样),所以你在Android活动中编写HTML代码,所以与ReactNative和NativeScript相比它可能会更慢(我们将在稍后讨论) . 您可以在Ionic 2中创建具有原生外观的小部件,但它们仍然在本机容器中的WebView中呈现,因此在技术上不是原生的 .

    Pros

    • Hybrid web development support. Same code-based can be used to develop applications for Android, iOS, Windows Phone, and web.

    • 非常快速的开发测试周期 . 您编写代码并在浏览器上进行测试,无需加载大量仿真器 .

    • 允许您在TypeScript中编写代码,从Angular 2进行转换很容易 .

    • 可以使用相同的语言(TypeScript)为每个平台开发应用程序 .

    • 它的插件系统使您可以使用任何类型的设备本机功能 .

    Cons

    • Performance issues may occur if you need to use a lot of callbacks to the native code.

    • 对于那些喜欢原生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更多的代码,这意味着它可以节省您的时间 .

    Pros

    • Real cross-platform support. Single code-base for developing apps for all the supported platforms.

    • 100%Native API访问 . 您可以使用TypeScript / JavaScript代码访问相机,触摸,日历,电话等硬件功能 .

    • 使用Angular 2,以便您可以轻松地在应用程序中传输以前的Web组件 .

    • Telerik非常好的支持 .

    Cons:

    • Many plugins need to be downloaded separately for the components. Not all plugins are available or verified (i.e., thoroughly tested).

    • 应用程序大小比ReactNative和Ionic 2大得多 . 如果您的用户网络连接速度较慢,那么对您来说可能会有问题 .

    • NativeScript中不支持HTML和DOM,因此您需要学习不同的UI组件来构建应用程序的UI .

  • 15

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

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

    使用 Nativescript 使用原生元素,因此您必须为浏览器和移动设备执行两个不同的视图,并且javascript代码之间会有一些更改,因为有些东西不是原始的,反之亦然 .

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

相关问题