我在移动领域已经有一段时间了,我们已经拥有原生的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 回答
如上所述,对于上述优秀答案,迟来要增加业务必须为决策过程提供输入 . 以下是企业必须帮助解答的一些主观问题:
资助/识别开发者资源对项目有何影响?即:我们必须做我们拥有的东西吗?结识新朋友?重新训练?混合与本机解决方案以及是否需要使用现有代码具有重大影响 . 想象一下,本地或前端开发人员或多或少变得冗余的解决方案......
如果UI / UX在移动与Web /响应/混合/ PWA之间相似或不相似,对业务的影响是什么?在本机和Web /响应/混合/ PWA之间访问本机功能(如相机,GPS,通知等)的某些不同功能的影响如何?
跨平台可能有不同的应用程序性能有何影响? (即原生更快)
企业是否评估了每种解决方案的生命和维护成本?
响应是响应的主要驱动因素(比如grid / flexbox / bootstrap),hybrid(比如Ionic)或native(比如Nativescript,React Native或pure os native) .
最后,最终的决定是业务和技术驱动因素的结合 .
这是非常主观的问题/答案,因为它取决于你想做多少工作 . :-)
首先,在iONIC / Angular2应用程序中,您基本上可以同时制作相同的Web版本 . 根据您的工作,性能可能是一个严重的问题 . 简单的屏幕不是那么多,数据很多;更大的问题 . 此外,屏幕布局可能会导致一些问题,因为您基本上编码为一个小型Web浏览器,该浏览器具有完全不同的屏幕分辨率,具体取决于哪个设备及其所在的操作系统 . 如果你需要更接近原生表现;有一些事情你可以做的更快(即使用CrossWalk)和整体你可以在iONIC 2中生成一个像样的网络应用程序 . 但很可能它永远不会有任何接近本机性能,也不像本机应用程序因为它仍然是一个试图模仿本机应用程序的Web应用程序 .
现在,如果您正在寻找Native性能和/或在设备上轻松执行本机操作的能力,那么使用NativeScript / Angular2可能是更好的选择 . 您可以获得本机性能,并可以访问所有本机控件(例如可以处理数千个复杂项目但没有减速的真实ListView) - 但是成本是您必须为您创建两个单独的屏幕并单独的css应用程序 . 可以在NativeScript和Web应用程序之间的NG2中共享实际逻辑;但屏幕生成是不同的,所以对于你的html组件/屏幕,你可能有
mycomponent.html
- ><div>{{somevalue}}</div>
和NativeScriptmycomponent.xml
- ><Label text="{{somevalue}}"></Label>
. 因此,您最终需要在NativeScript中进行更多的前期工作,因为您必须创建两个单独的布局文件 . 但是,这使您可以更好地为手机或平板电脑屏幕设置移动版本,和/或其他选项,例如可以访问NS布局中的相机,以及html版本中的上传图像文件按钮 .作为使用这两种技术的人,我坚定地参与NativeScript阵营的所有新项目;但是对于某些人来说,如果应用程序是基于Web的,并且没有任何需要任何复杂视图和/或大量数据的显示,那么仍然有一些有效的用例可以使用iONIC / Phonegap / Cordova .
简答
使用 Ionic ,您正在构建 hybrid apps 或 Progressive Web Apps . 应用程序的结构是用HTML编写的,内置的应用程序使用WebViews(类似于应用程序中的网站) .
使用 NativeScript ,您正在构建不使用HTML DOM的 native apps ,您必须学习所定位平台的UI组件(例如 iOS / Android ) . 但是, native apps 通常比混合应用程序更快,您可以使用TypeScript / JavaScript代码访问相机,触摸,日历,电话等硬件功能 .
答案很长
这是Danyal Zia的blog post的摘录 . 我建议你阅读完整的一本 .
离子(2)
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
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 .
不要将 Nativescript 与混合应用程序混合,因为混合应用程序是使用webview的应用程序(如Ionic), Nativescript 是原生应用程序 . 两种类型之间的区别 .
使用Ionic,您可以拥有一个源,因为您拥有所有三个目标的相同视图 .
使用 Nativescript 使用原生元素,因此您必须为浏览器和移动设备执行两个不同的视图,并且javascript代码之间会有一些更改,因为有些东西不是原始的,反之亦然 .
取决于应用程序的使用目标是什么 .