在本机和phonegap之间挣扎,简单的应用程序要求

时间:2012-12-28 06:34:35

标签: android ios cordova hybrid-mobile-app phonegap

我要创建一个原生(意思是; 不是在浏览器中)移动应用。由于我是网络开发人员,我很难决定是否应该尝试使用Phonegap,或者只是在java或objective-c中构建本机应用程序。

应用程序要求很简单。 GPS / wifi位置,Facebook集成,我想我需要一个数据库来处理一些特定于Facebook的朋友关系。就像游戏中的高分一样 - 比如那样的东西。

我是一名网络开发人员,并且不知道java或objective-c。我之前从未使用过Phonegap,所以我不知道它是否能够满足我的要求。

所以我的问题如下; 我可以将Phonegap用于我的应用程序,还是需要深入研究一种新语言?

10 个答案:

答案 0 :(得分:158)

相关:

本文的较大版本也可以找到 HERE ,透明它是我的个人博客。

混合与原生应用

混合应用程序:

<强>临

  • 更快的开发,特别是如果您是一位长期的Web开发人员。
  • 可以在每个可用平台上使用1种语言。当然,这需要一个Phonegap包装器。您不需要学习Objective C,Java或C#来进行任何开发。您只需要了解Phonegap实现的基础知识。您需要稍微使用上述语言,但不需要了解它们。
  • Phonegap可以提供一些原生功能,如iOS原生标签栏或Android原生标签栏等等。
  • 降低预算成本和庞大的支持者和开发者社区。
  • 混合应用程序提供了访问最常见设备API的两种方法的优势,以及广泛的设备覆盖范围,同时不需要专门技能,更大的预算和更长的上市时间,这些都是完全原生应用程序的典型特征。

<强>缺点:

  • 一段时间后,你会在字面上和比喻中沾上鲜血。
  • 移动电话(即使是今天的平板电脑)还不够快,无法顺利运行混合应用程序,移动JavaScript功能充其量只是最好的。 Android平台是一场噩梦,页面转换不顺利,更不用说缺乏CSS / CSS3实现了。如果您认为原生Android 2.X和4.X有差异,请看看Android 2.X糟糕的JavaScript / CSS实现。 iOS票价更好,但仍然缺乏CSS3实现更好的页面转换。要使这个简短的原生应用程序始终拥有更好的用户体验和一般感觉。
  • 您将花费更多时间修复应用程序然后构建它。为每个平台创建一个应用程序是一个痛苦的问题。不同平台上的浏览器不统一支持所有最新的HTML功能和API,这可以使开发和测试成为一项挑战。
  • 如果你没有一个优秀的设计师,甚至不要试图建立一个应用程序;看起来就是一切。
  • 如果您不知道自己在做什么,那么您的应用很可能无法获得Apple应用商店的许可。即使Google Play商店发现第三方Phonegap PayPal插件,也会禁止你的应用。

原生应用:

<强>临

  • 原生移动应用可以提供最佳用户体验 - 快速流畅,可以为您提供最佳的设备功能,并且可以在应用商店中找到。
  • 毫无疑问,原生应用程序可以完全访问底层移动平台。原生应用程序通常非常快速和优雅,非常适合高性能应用程序或游戏。这就足够了。

<强>缺点:

  • 预算越大,至少需要一个具有Java和Objective C知识的人,如果你想要一个Windows移动应用,你甚至需要C#。是的,你可以自己学习,但不要生活在你将在短时间内这样做的错觉。 如果您从未进行过任何开发,请选择Objective C(iOS仍然是一个更好的平台)。在其他情况下选择Java。 Java的语法与其他可用语言类似,因此很容易从C#跳转到Java,反之亦然。目标C是它自己的世界。它有一种相当罕见的语法。
  • 你可能需要更长的时间来开发所有这些,时间就是金钱。这取决于应用程序的复杂程度。

在您的情况下,如果您具有良好的Web开发/设计技能和/或拥有优秀的设计师,您应该选择混合应用程序。只有当这个应用程序是一个复杂的应用程序时才会原生。您想要的一切都可以通过混合应用程序完成。你会找到一个伟大的支持社区。

混合应用

我之前没有说过你需要特别小心。即使你是经验丰富的开发人员,你也会发现很多问题无法解决。混合开发不应该被误认为是基本的Web开发。

每个移动平台都有自己的一系列问题,更不用说移动电话的行为因设备而异。如果可能,始终创建一个适用于较慢设备的应用程序,因为本机应用程序几乎可以在任何设备上成功运行

还有一件事,在创建混合应用时,应用开发将占用您大约30%-50%的时间,其余时间用于特定平台的调试和学习。相信我,即使经过几年的移动开发,有时我遇到的问题我无法单独或足够快地解决。

因此在选择移动框架时要小心,选择2-3并花几天时间阅读它们。

链接

以下是一些可以帮助您做出决定的链接:

PhoneGap + jQuery Mobile 1.4 tutorial - 这是PhoneGap和jQuery Mobile最新版本的分步教程

PhoneGap + jQuery Mobile 1.4 tutorial - MacOS version - 这是MacOS上PhoneGap部署的分步教程。 jQuery Mobile部分在前一篇文章中有所介绍,没有必要重复。

jQuery Mobile vs Sencha Touch - jQuery Mobile Sencha Touch比较

jQuery Mobile vs Kendo UI - jQuery Mobile Kendo UI比较

7 best known HTML5 mobile frameworks - 名称告诉所有内容

7 less known HTML5 mobile frameworks - 名字告诉所有内容

答案 1 :(得分:16)

如果您的应用程序没有动画效果,而且我更喜欢在Web(Phonegap)cz中创建,我们可以在更少的时间内在多种类型的移动操作系统中启动。 如果您的应用包含更多UI效果和动画,那么最好使用原生..

即使你在webview(Phonegap)中开发,你也需要学习Android和iOS中的一些基本步骤

Phonegap在设备中的表现

<强>奥斯 ios webview中的动画和视图加载是搁浅和良好的,动画效果可以清晰地观察到

<强>的Android
在运行html代码时我们必须考虑Android的设备版本和设备公司,android中的一些高配置设备提供更清晰高效的动画显示,但是一些设备(主要是旧版本和一些公司设备)无法提供良好的动画效果,渲染效果因android中的设备而异,

答案 2 :(得分:7)

在我对Phonegap的拙见中,您可以开发简单的应用程序,仅此而已。文档是不够的,像其他人一样说你将花费更多的时间来修复bug和查找插件而不是构建你的应用程序。我会努力学习Android或iOS或其他任何东西,将其视为您的投资。 (是的,我的评论有点偏颇)。

答案 3 :(得分:3)

最后我调查了它PhoneGap是html,css和javascript。所以,你可能会感到宾至如归。 PhoneGap可以处理GPS位置,请参阅this article from PhoneGap's documentation.您是否想要获取目标C取决于您选择新语言的速度,因为它与Web开发有点不同。

答案 4 :(得分:3)

这完全取决于您的需求

在发布我的第一个应用程序几个月后(本机Android,数据库驱动,安静的连接应用程序),我决定使用phonegap重写我的应用程序(因为我想将应用程序克隆到iOS,所以不要在ObjC中进行,为什么不用javascript?)

在Android上,它让我这个Java开发人员花了3周时间从头开始学习和编写代码。如何让ListAdapter与我的服务器上的Restful Service同步,如何设置应用程序的主题(在我看来相当困难,尤其是涉及透明,边框,...等特殊效果时,我多次敲打墙壁! ),以及如何有效地构建你的代码库(如果你熟悉Java,你会发现所有的类都是彼此非常耦合的,因为这是大多数教程写的内容)

在Phonegap上,一切都在1周内完成。使用onsenuiangular的Css,html使GUI开发就像大约一年级学生的任务一样,主题只是小菜一碟。我不需要在真实设备上运行它,只需在开发过程中使用浏览器,更改代码和刷新就足够了。 Angular提供与DOM的双向绑定,这在收集和显示数据时非常棒。例如:

<ul ng-each="for sentence in sentences" >
   <li>{{ sentence.title }} </li>
</ul>

当变量sentences被更改(从服务器检索)时,DOM也会自动更改。但是,javascript只是javascript。我发现自己在调试应用程序时遇到了很多困难,特别是在使用PouchDB执行MapReduce功能时(大错误,今晚必须回到cordova-sqlite-plugin)并且大多数时候,我必须阅读日志才能找出问题(Chrome的工具和Firebug无法捕获断点)。此外,很难重新构建您的应用程序(javascript,再次),所以如果您没有在第一个标志处仔细组织您的代码库,您可能最终会弄得一团糟(调试再次成为真正的痛苦)。 PhoneGap也是基于网络的,所以有时候,你会听到#34;因为在这个平台上,它不支持bla bla bla&#34; (例如,localStorage)如果你找不到任何好的插件,你必须支持它。

结论除了基于Web的存储的限制外,PhoneGap在数据库驱动的简单GUI应用程序中运行良好(并且大多数数据库驱动的应用程序目前都有一个简单的GUI)。如果你要开发那种应用程序,那么坚持下去

答案 5 :(得分:2)

使用ionic签出,由angular.js支持,以抵消接受的答案中提到的一些缺点。启动员工目录应用程序的教程:http://coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/

答案 6 :(得分:1)

@ Gajotres写了一篇很棒的回复,但混合应用程序的表现自2012年以来已经走过了漫长的道路。我回答了一个related question,它涵盖了2017年混合和本机应用程序开发之间的差异。

故事的寓意是混合应用程序开发在过去几年中有了很大的改进,但在某些用例中它仍然无法与本机匹配。

使用像Ionic这样的工具(首先在2013中发布)和React Native(在2015中首次发布),使用类似本机的组件构建混合应用程序比以往更容易。混合应用程序现在更快,更少错误,并且能够与本机UI进行更深入的交互。

混合应用程序性能的门槛大大高于几年前,但仍有一点可能需要用母语开发应用程序。

Original Answer:

  

是的,一般情绪是Hybrid应用程序不如Native   应用。虽然这对于更熟悉的开发人员来说可能令人沮丧   网络技术,它确实有充分的理由:

     
      
  1. 无法与本机组件进行交互:虽然存在cordova-plugin-statusbar等插件,但仍有局限性   使用Web与本机组件交互和操作   技术。我个人经营的一个伟大(令人沮丧)的问题   into是无法在键盘的顶部输入   键盘动画。这听起来像是一个不发布的东西,直到你看   在应用程序中,这是一个必不可少的功能,如在聊天应用程序中   像Slack。
  2.   
  3. 300毫秒延迟:虽然现代浏览器开始phase this out,   Hybrid应用程序上出现的第二个延迟的一小部分构成了应用程序   感觉缓慢而非原生。这个问题变得不那么重要了   更多用户采用诸如此类的解决方法   FastClick.js和其他人   像Ionic这样的框架消除了它   默认情况下。
  4.   
  5. 仇敌是对的(有点):虽然混合应用开发已经走过了漫长的道路,但仍然存在轻微的故障和滞后   Native应用程序中不存在的函数。屏幕   转换,应用切换和电池寿命仍然是常见的领域   对于出现的错误,可能会持续一段时间,即使它们是   开始变得越来越不明显。
  6.   
  7. 有一些很棒的原生解决方案:使用Apple的Swift等新语言变得更容易   用母语编写的代码。话虽如此,像React Native这样的工具却陷入了灰色   Native和Hybrid之间的区域,允许开发人员编写代码   友好的技术,如JavaScript,但编译成本机代码。
  8.         

    这个故事的寓意是它真正取决于什么是重要的   你的具体用例。混合应用程序已成为可行的选择   不再是一个令人尴尬的侧面秀。相反,仍有   与Native UX交互的次要方面还没有   可能除了使用Native应用程序。

         

    总的来说,我建议制定你的项目并确定你的项目   应用程序需要Native应用程序的任何好处。使用诸如的工具   Ionic View app很容易组合起来   你的应用程序的基本模型和真实设备上的测试,无论是否   混合应用程序将为您服务。

答案 7 :(得分:0)

还有AppGyver类固产品可以很好地整合PhoneGap和Native UI。

使用类固醇,您可以添加诸如本机标签,本机导航栏,本机动画和过渡,本机模态窗口,本机抽屉/面板(脸书侧面菜单)等内容到您的PhoneGap应用程序。基本上,无论CSS + JS没有削减它,Steroids都会进入本机层来执行操作。

此外,使用类固醇,您可以(尽管您不必)使用多页面架构(多个Web视图)而不是单个。对于单页应用程序,转换等所有内容都只是CSS的解决方法,正如Mani所说,即使是现代平板电脑和手机也不够快,无法使它们流畅。它总是很明显,当它是一个phonegap应用程序时,特别是当你有一堆进程,或者你正在滚动,因为JS进程被扼杀(在iOS 8中被修复)。

使用多页面体系结构意味着您可以获得100%的原生性能(因为这些部分实际上原生的)。与phonegap不同,您将获得一致的用户界面行为和更轻松的调试(使用单页面应用程序,通常很难在您的应用程序中重新创建特定状态)。多页面使您可以更轻松地开发和维护您的应用程序,因为您的代码库更加清晰。

查看演示:http://youtu.be/oXWwDMdoTCk?t=20m17s

答案 8 :(得分:0)

我在这里找到了一篇好文章http://www.comentum.com/phonegap-vs-native-app-development.html,它将这两种方式比作不同的类别。

摘要如下:

  1. 接口设计(相同)
  2. 费用(Hybrid具有优势)
  3. 开发时间表(Hybrid具有优势)
  4. 用户体验和效果(原生有优势)
  5. 可维护性(相同)
  6. 无限制(原生有优势)
  7. 安全性(相同)
  8. 支持和资源(原生有优势)
  9. 工具和调试(原生有优势)
  10. 平台无关(Hybrid具有优势)
  11. 受欢迎程度(相同)

答案 9 :(得分:0)

一个被忽视的好选择是 Xamarin 的开发。

虽然使用OP的Web开发人员技能没有帮助,但与PhoneGap相比,它有许多优点,而且几乎没有缺点。

Xamarin vs PhoneGap Pros:

  • 成熟的框架,提供对大多数(如果不是全部)本机的访问 移动设备的功能。
  • 只学习一种语言(大多数开发人员的C#) 平台。
  • 在iOS / Windows Mobile上有本机应用程序的性能(因为应用程序被编译为本机代码)并且在Android上非常接近(它仍然可以编译为本机APK,但必须有一个可以翻译.NET的瘦包装器类库API在运行时的Android类API中。)
  • 由微软维护,支持整体的慷慨质量 平台本身和开发工具。例如,您将使用Visual Studio,它可能是最好的IDE,现在有免费的社区版,其中包含Xamarin开发所需的所有功能。

Xamarin vs PhoneGap Cons:

  • 需要一些时间投资才能让纯Web开发人员切换到C# 和Xamarin类库API。

因此,Xamarin是当今跨平台开发的一个非常可靠的选择。