我要创建一个原生(意思是; 不是在浏览器中)移动应用。由于我是网络开发人员,我很难决定是否应该尝试使用Phonegap,或者只是在java或objective-c中构建本机应用程序。
应用程序要求很简单。 GPS / wifi位置,Facebook集成,我想我需要一个数据库来处理一些特定于Facebook的朋友关系。就像游戏中的高分一样 - 比如那样的东西。
我是一名网络开发人员,并且不知道java或objective-c。我之前从未使用过Phonegap,所以我不知道它是否能够满足我的要求。
所以我的问题如下; 我可以将Phonegap用于我的应用程序,还是需要深入研究一种新语言?
答案 0 :(得分:158)
本文的较大版本也可以找到 HERE ,透明它是我的个人博客。
混合应用程序:
<强>临强>
<强>缺点:强>
原生应用:
<强>临强>
<强>缺点:强>
在您的情况下,如果您具有良好的Web开发/设计技能和/或拥有优秀的设计师,您应该选择混合应用程序。只有当这个应用程序是一个复杂的应用程序时才会原生。您想要的一切都可以通过混合应用程序完成。你会找到一个伟大的支持社区。 p>
我之前没有说过你需要特别小心。即使你是经验丰富的开发人员,你也会发现很多问题无法解决。混合开发不应该被误认为是基本的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周内完成。使用onsenui
和angular
的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进行更深入的交互。
混合应用程序性能的门槛大大高于几年前,但仍有一点可能需要用母语开发应用程序。
是的,一般情绪是Hybrid应用程序不如Native 应用。虽然这对于更熟悉的开发人员来说可能令人沮丧 网络技术,它确实有充分的理由:
- 无法与本机组件进行交互:虽然存在
cordova-plugin-statusbar
等插件,但仍有局限性 使用Web与本机组件交互和操作 技术。我个人经营的一个伟大(令人沮丧)的问题 into是无法在键盘的顶部输入 键盘动画。这听起来像是一个不发布的东西,直到你看 在应用程序中,这是一个必不可少的功能,如在聊天应用程序中 像Slack。- 300毫秒延迟:虽然现代浏览器开始phase this out, Hybrid应用程序上出现的第二个延迟的一小部分构成了应用程序 感觉缓慢而非原生。这个问题变得不那么重要了 更多用户采用诸如此类的解决方法 FastClick.js和其他人 像Ionic这样的框架消除了它 默认情况下。
- 仇敌是对的(有点):虽然混合应用开发已经走过了漫长的道路,但仍然存在轻微的故障和滞后 Native应用程序中不存在的函数。屏幕 转换,应用切换和电池寿命仍然是常见的领域 对于出现的错误,可能会持续一段时间,即使它们是 开始变得越来越不明显。
- 有一些很棒的原生解决方案:使用Apple的Swift等新语言变得更容易 用母语编写的代码。话虽如此,像React Native这样的工具却陷入了灰色 Native和Hybrid之间的区域,允许开发人员编写代码 友好的技术,如JavaScript,但编译成本机代码。
醇>这个故事的寓意是它真正取决于什么是重要的 你的具体用例。混合应用程序已成为可行的选择 不再是一个令人尴尬的侧面秀。相反,仍有 与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不同,您将获得一致的用户界面行为和更轻松的调试(使用单页面应用程序,通常很难在您的应用程序中重新创建特定状态)。多页面使您可以更轻松地开发和维护您的应用程序,因为您的代码库更加清晰。
答案 8 :(得分:0)
我在这里找到了一篇好文章http://www.comentum.com/phonegap-vs-native-app-development.html,它将这两种方式比作不同的类别。
摘要如下:
答案 9 :(得分:0)
一个被忽视的好选择是 Xamarin 的开发。
虽然使用OP的Web开发人员技能没有帮助,但与PhoneGap相比,它有许多优点,而且几乎没有缺点。
因此,Xamarin是当今跨平台开发的一个非常可靠的选择。