为什么HTML5移动应用程序名声不好?

原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50331651



英文原文:《Why Do HTML5 Mobile Apps Have a Bad Reputation?


    认为混合HTML5移动App好像口碑差, 这是不合理的。如果你跟大多数原生移动App开发人员讨论,他们会告诉你, 混合App:

  • 只适合建立快速原型

  • 慢, 性能低于原生App

  • 不是真正的移动App

    并不都是只生开发人员, 如果你和试图和开发HTML5和PhoneGap混合App的开发者讨论, 你会得到一个类似的回复。

    我见过并使用过一些很棒的使用了HTML5和PhoneGap创建的App, 它的外观和感觉就像原生App(体验好的那种)。这里有两个例子:

  

Snow Buddy                            UNTAPPD

    还有很多更多.

    这些App不是怪胎, 他们是由善于使用工具的优秀开发人员创建的复杂App。你甚至分辨不出来他们到底是不是原生的。

    所以, 我的问题依然存在。为什么HTML5移动App的名声不好?


1、很容易创建体验不好的HTML5移动App

    Syd Lawrence(Snow Buddy的开发者之一)在一个关于如何构建高性能PhoneGapApp"PhoneGap之日"上表达了他的看法:

"很容易创建体验不好的HTML5的移动App。"

    HTML5很容易创建一个移动App, 它的名声大多来自于此。如果你把一个很熟悉HTML、CSS和JavaScript相的, 但之前从未开发过移动App的人拉过来,他也可以在一两天之内拼凑出一个简单的HTML5移动App。

这反而存在问题,为什么?

  • 他以前从未开发过手机App,可能会不明白如何设计合适的界面和良好的用户体验

  • 他们也不会理解一个移动App的局限性以及如何克服性能问题

  • 他们可能认为这和网页能做的事情差不多

  • 他们可能不了解通用编程的原则

  • 生成的App可能会很糟糕, 显现出HTML5的那些老套的问题

    现在我不想贬低web开发人员直接一来就创建了不好的移动App, 其实这正是他们应该做的, 这是一个学习的很好方法。

    但是如果你让同样的开发者,尝试开发一个原生App, 他们必须学习一门全新的语言和开发方法。直至开发出一个可用的App,这需要更长的时间,不过那时他们将有相当多的经验,然而大多数没准备好的开发者可能达不到这样的高度。

    于是,我们最终有人砸出一个HTML5移动App, 想“咦, 这太垃圾了”,于是转向原生开发, 期待有更好的结果。这造成了大量比糟糕的原生App还要多的糟糕的HTML5 App。结论: 混合App表现不佳。

    如果我们让同样的开发者, 让他们花一些时间真正理解如何创建高效HTML5移动App, 那么结果会好很多。

"原生开发迫使你做出好的App, 而HTML5允许你做出好的App"

    这并不是说, 所有的原生App是好的, 我看到过一些不好的App, 但一般来说还是有很多不错的原生App的。

    这是一种类似于PHP编程语言的情况。语言对初学者友好, 规则很轻松, 所以它吸引了很多初学者,却用它开发了糟糕的App。但是如果你知道如何正确使用PHP, 那么它就是一个非常有能力的语言(估计还要正确对待某些人对他说的关于PHP的坏话)。


2、如果你不使用框架, 一个好的框架, 你就会得到体验差的App

    好的框架, 专门对付HTML5的缺点, 特别是诸如:

  • 点击延迟(300ms)

  • 内存使用率

  • 动画

  • DOM操作

    这样你就可以专注于构建您的App。有很多小事情, 有这些框架处理, 以确保你可以开发一个顺滑, 类似原生体验的App。所以没有一个好的框架就开发不出一个好的App。

    自然, 框架有好的也有不好的。jQuery很受欢迎, 因为大多数人都熟悉它, 但它在移动设备上表现不好。比如Ionic这类基于AngularJS的性能很好, Sencha Touch是另一个很强大的例子(正在变成EXT JS 6).


3、人们认为混合HTML5App不具有离线使用的功能

    这个假设通常有两个部分:

  • 认为混合App需要有网络连接才能使用

  • 认为混合App没有离线存储数据的能力

    先看第一个假设, 其实根本不是这样的。HTML5的移动App可以使用PhoneGap打包和分发App商店。程序需要的文件都包含在了App安装包内, 以及有一个内置的浏览器, 运行它一般不需要联网(当然, 除非App需要使用互联网)。

    第二个假设, HTML5App的默认存储通常是浏览器原生存储。这挺好的, 通常适用于大多数App, 但它有容量限制, 不太可靠。一般是将数据存储在服务器,在App需要的时候再去请求。

    但如果你想让你的用户离线使用你的App呢?

    这有个解决方案。首先通过使用SQLite PhoneGap插件,HTML5移动App可以很容易地访问本地存储, 如果App需要同步在线和离线数据可以使用类似PouchDB.


4、人们认为HTML5不能做原生App

    作为最后一点的一个扩充, , 一些人没有意识到混合HTML5App可以做到任何原生App可以做的事。这包括诸如:

  • 访问GPS

  • 相机

  • 蓝牙

  • 在后台运行的任务

  • 推送通知

  • App内置购买

  • 游戏中心集成

    通常PhoneGap就是用来构建HTML5移动App的,使用PhoneGap包装出来的就是原生App。所以通过使用PhoneGap作为桥梁,HTML5移动App可以访问所有正常的原生App可以访问的任何东西。


如果你想了解更多关于PhoneGap是如何工作的,看看我的免费电子书.


5、优越感

    编程社区, 这是一个丑陋的文化问题。这些辩论永远在进行着: HTML5 vs 原生, Mac和PC, PHP和Ruby等等。许多人认为, 他们选择的一切事情都是正确的, 而选择其他的任何人都是白痴。

    本来高高兴兴地讨论着不同的方法的优缺点, 但往往这些讨论转变成了一个“我们vs他们”的心态, 然而很快就发现其实都是徒然。人们在选择编程语言的时候往往很情绪化,这完全可以理解, 没人想要加入"失败"的一边。

    更有甚者, 对某些人来说,还有自我保护的因素在里面。如果你很了解某种技术, 然后突然另一种对你有竞争性的技术出现,让它消失似乎是你的兴趣爱好。如果你的客户开始对你说:

"你会HTML5么?我们想在多平台上发布App"

    这对基于objective-c的业务来说将是很糟糕的, 所以objective-c开发者会这样做——使客户(或普通人群)相信, HTML5不是一个可行的选择, 或者都没人会用Android——也是情有可原的。

    我不认为这是一场有胜者的战争, 不同的目标需要不同的解决方案。有时需要原生解决方案, 有时需要解决方案将HTML5, 甚至很多时候使用哪种方法根本没有关系。


6、人们不知道好的HTML5App是用HTML5写的

    不难发现一个差的HTML5App, 但很难发现一个好的HTML5App, 因为…你不能区分它是不是原生的(这才说到点子上了)。Syd说:

"关于Snow Buddy我最喜欢的一件事, 不是app做得多么好,而是被那些我很尊重的开发者问道:

-你用的是 Swift 还是 Objective-C?

-我们用的是PhoneGap。"

    如果人们看到一个简陋的移动App他们认为用的是HTML5, 如果他们看到一个很棒的手机App, 他们确认为它是原生的。这加强了误解。


你的想法呢?

    我的观点是, 对于大多数移动App,HTML5 /混合方法再合适不过的, 如果开发好了, 你很难区分它是不是原生。而且有个巨大的好处是能够被部署到多个平台。

    我不认为这意味着原生App会在任何地方, 我认为原生App还会很长一段时间的存在于专业需求上, 对某些团队来说,开发两个原生App可能是更可取。当比较两个解决方案的时候,唯一合理的担忧是最终的目标,而如何达到就要看哪种方式适合你或你的团队了。

    我会很乐于听到来自HTML5和原生开发者的评论, 但是我们真的都能好好相处吗? 






欢迎加入Sencha Touch + Phonegap交流群

1群:194182999 (满)

2群:419834979

共同学习交流(博主QQ:479858761

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值