我真的很担心当我用Sencha Touch编写iPhone应用程序并将其放入PhoneGap容器时,用户体验会降级。
我特别看到了瓶颈:
请记住,iOS 4.x中有很多3G iPhone运行速度非常慢。我放弃了对原版iPhone的支持。
我是一名训练有素的UI专业人士,只需触摸其中的一些东西即可发现ST应用程序。
从Safari到PhoneGap容器的转变会提高性能吗?
你有经验吗?
答案 0 :(得分:14)
我没有使用过ST或PhoneGap,但我使用过使用它们构建的应用程序。我可以肯定地说,我的3GS中的应用程序确实是最差。如果您正在计划演示,原型或测试,那么您可以放心使用它们。但是,如果您想制作具有竞争力的 UI / UX 的应用,则不应该。 (甚至你想制作原型,最好有一些论文)
对于你的问题,速度。它绝对不具有可比性。 HTML + CSS是功能丰富,易于使用的框架。当然,它的速度很慢而且很容易。大多数基于HTML的UI工具仅使用UIWebView
,它是本机框架的一部分。事实上,UIWebView
是Mobile Safari本身。因此,工具的性能永远不会比Mobile Safari更好。如果您想查看动画中的效果,只需使用Mobile Safari访问http://www.chromeexperiments.com/即可。我检查过没有一个展示平稳运行,即使其中很多都不需要强大的图形功能。
本地应用程序使用数十年来专业研究的尖端技术进行编译和优化。并且有很多选项可以调整和调整代码以提高性能。但是其中一些应用于HTML。 因为HTML应始终保证功能丰富,易于使用的框架。大多数优化(这会提高性能)在功能和简单性之间进行权衡。
然而在iOS 4.3中,Mobile Safari的性能得到了提升。但我不相信它对于拥有闪亮UI的应用程序有意义。
我看到了一个使用JavaScript的图形框架。事实上,它是用JavaScript编写脚本的游戏框架。所以它与HTML或CSS无关。 (我忘记了它的名字,但它是不完整的产品)
PS。
还有另一个重要原因。 UI行为不一致。框架模仿iOS的原生UI但不完整。所以像模仿仿制品牌一样让人觉得不舒服。 但是,如果您不想要原生UI,则无需关心它。
我回答这个问题已经有很长一段时间了,但我意识到我还要提到GC。 JavaScript是基于GC的语言。这意味着,它具有不可预测的GC时间,这使得主线程停止。这使得UI挣扎。在本机实现上,您可以控制是否使用GC。
在Android上这不是问题。由于Java上的GC,Android总是让那些苦苦挣扎。因此,用户不会感到任何不同。但在iOS上,基于HTML5的应用程序从未提供比竞争对手的原生应用程序更好的体验。
此GC时间问题有许多变通方法。如incremental-GC,realtime-GC等。但实际上,没有真正的解决方案。因为原始问题是你没有控制权。
答案 1 :(得分:3)
事实证明,在任何webapp(包括所有ST2应用程序)周围放置PhoneGap包装器实际上可以显着降低其性能。这是因为它使用的UIWebView实际上不与iOS的Safari浏览器相同,后者有许多增强功能,使其更具有穿孔性。这背后的一个原因是,从iOS 4.3开始,Safari使用非常快的“Nitro”JavaScript引擎,这在PhoneGap使用的UIWebView上不可用(尽管as of iOS5 it's available for webapps running in full screen mode)。
有些人已尝试使用效果来了解其影响,一个是Facebook App的表现,另一个是canvas performance的表现。
事实证明,嵌入式UI浏览器可能比Andriod更糟糕some tests have shown。
答案 2 :(得分:1)
我发现即使在PhoneGap之外,ST应用程序的性能也很糟糕。
答案 3 :(得分:1)
在撰写本文时,我会说:适用于没有高要求图形的模型和快速应用程序。
但随着时间的推移,事情可能会发生变化,因为两个项目(PhoneGap和Sencha Touch)日复一日都在改善。
硬件变得越来越强大(iPhone 4,5,......,双臂cpu ......)所以有一段时间,基于ST和PhoneGap的应用程序将具有接近本机应用程序的性能,并且这可能会超出预期。
因此,请密切关注这些项目,并继续与他们一起开发“基本”应用程序以测试其性能。
答案 4 :(得分:1)
我使用带有和不带PhoneGap的Sencha Touch构建了一个商业应用程序。任何主要的性能影响来自Sencha Touch(1.x或2),而不是PhoneGap。正如Eonil解释的那样,这是因为PhoneGap确实在使用本机浏览器。我注意到iPhone 4上的ST性能“足够好”(我认为3GS与iOS 4.3+相比;取决于用户的期望)。在Android上,只有最近的设备适用于ST 1.1,但ST 2专注于Android性能。我确信Sencha将继续创新并推动业绩,因为他们的业务取决于它。
如果您使用Sencha Touch(或任何JavaScript),请务必使用缩小版(-debug)。
我还在iOS和Android上构建了琐碎的本机应用程序,实际上没有比较;本地人要快得多。
答案 5 :(得分:0)
我用ST2做了几个应用程序,并为原生包装。 你当然可以比较两者,但它们是非常不同的野兽!
简单地说,如果您的Sencha应用程序在Safari和Android Stock中表现良好,一旦包装好iOS或Android,它将以类似的方式执行。 Phonegap / Cordova对性能的影响不大,这些只是本机功能的桥接/容器。
我认为如果您担心性能,请查看有关优化ST2应用的许多教程。可以通过很多方法来改进转换和列表滚动。
如果您对自己的应用在网络应用中的表现感到满意,那么我认为您已经回答了您的问题。 Web应用程序不是原生的,一些更大的框架所做的伪装是误导性的。最终,用户的期望并不总是得到满足。