首先在写这篇文章前,必须先申明一下,本人是技术出身,对HTML技术及手机客户端都有过编程经验,只是出于工作岗位的变动,便没有再具体代码工作,以下文章涉及的中间件的基本代码实现及前期的API使用,都是自己测试过的,虽然比较浅,但是都是真真实实的。所以请各大网友拍砖,手下留情哦~另外本文的视角如文章标题一样, 是从产品经理的角度去做比较的,不是从技术方面上去做比较。

而关于原生态的开发,个人觉得HTML5中间件或者混合原生的方式肯定是不用做比较的,毕竟原生的东西还是很强大的,很多效果是HTML5无法比拟的,但是请确认你要做的产品是要炫?还是实用?好吧,入正文啦。

记得第一次接触PhoneGap,是在2011年5、6月份左右的时候,当初寻找这类HTML5中间件或者说HTML5平台的初衷是为了能快速推出iPhone及Android等智能手机客户端;至于为什么需要这类HTML5中间件呢?我们是出自这样的考虑:

  • 由于公司资源的分配问题,原生态开发组已经肩负太多的项目,等待原生态组团队明显不能满足我们急切要推出智能端的要求;而现有团队都是做WEB开发的,显然对于HTML这个团队是比较熟悉的,而且这样的学习成本也是相当的小;
  • HTML5跨平台的特性,一次编译,run Anywhere.只要一套html5程序代码,经过中间件的编译就可以在iPhone、Android及Symbian,还有Windows Phone 上运行,明显这个是开发成本及时间成本上可以大大的节省;
  • 用户体验性能如何,能否给用户提供流畅的用户体验;

在满足了这些条件及经过一周时间的选型之后,公司决定选择了PhoneGap平台(中间也分析过其他中间件平台如:Titanium、Sencha Touch等,但都不是很理想),接下来就是苦逼的开发鸟~

由于前期在HTML5平台的使用上欠缺经验,所以在前期做选型的时候没有用很具体的业务逻辑去做性能测试,结果到了开发的中间过程,发现PhoneGap的整体性能太差了,点击一个事件都要等半天,启动页面也很慢,切换页面也是相当的慢,最终我们的产品连页面件的切换动作都不敢用…但是已经在研发进程中了,此时再改方案似乎也没有好的平台选择,也无法保证产品进度鸟,最终我们做出了这样的技术优化:

  • 页面的js库,采用自己的JS库,没有采用Jquery mobile,以加快加载速度;
  • 采用本地HTML界面模版方式做数据缓存,以减少数据请求次数;
  • 修改了PhoneGap源代码,优化启动界面及部分接口,如地图定位接口;

最终产品如期推出,可是性能方面上只能说是差强人意啊,至于体验,我想到了目前流行的一句话我想说“我能讲脏话吗?”“不行”“那我没什么好说啦!!!”

其实当初也大体知道PhoneGap在性能方面上表现差强人意,可是我们是这么期望的,在我们产品的开发过程中,应该会得到改善,而事实证明这个期望让我们承担了太多的风险;

之后,我们也试过了采用Sencha来实现,表现也是一般,所以对于HTML5中间件的性能表现,我们都不抱希望了,虽然说对这个方向一直都是看好的,可是一直都没有很好的中间件能解决这个性能问题;这个状态一直持续到今年的3月份的一天,在36Kr网站上得知了AppCan这个产品在做内测,所以很快就申请了内测,进行了试用;

一开始我试用的是采用Web模式,将http://www.8000.cn的网址编译成APK包做测试,发现好像整体启动速度及性能表现还可以;出于上次的经验,我再测试了AppCan所谓的Easy模式,随便搞了新闻类的编译了一下,感觉这东西好像还不错哦,效率应该可以挺高的,可是Symbian版本就实在难以接受鸟,下载后一大段时间白屏,然后还要再下载一个AppCan核心插件,最终直接关闭程序,无视Symbian版本;然后便安排了技术人员做深入的了解及实验,包括从API接口,性能及支持方面进行详细的研究;

研发团队经过了2周的时间的代码实现,出了一个公司产品的Demo版,在经过大多数相关人员的使用过后,感觉性能比PhoneGap实现的确实改进了不少,比如说页面的切换特效还挺顺畅的,一些公共插件及接口都比较全面,如Jabber通讯、二维码扫描、支付宝等;可是致命的一个问题是:点击触发某个事件的时候,还是可以感觉‘顿’一下的等待,让人有点不爽,最终这个问题也顺利得到了解决,原因是onclick事件的响应没有ontouchstart事件来得快,两者相差了0.5s这个数量级,实在无语AppCan这样的重要体验,都没有文档说明。

下面表格是PhoneGap与AppCan综合对比表:

综合来看最终还是感谢AppCan这个产品,虽然有些地方还需要完善,但的确做得挺棒的,基本满足了我们产品研发的需求。PhoneGap作为较早进入国内的HTML5中间件知名度较高,但毛病也不少。希望两者都能越来越好!

PhoneGap Vs AppCan的更多相关文章

  1. 【Hybrid App】一个产品经理眼中的PhoneGap Vs. AppCan

    首先在写这篇文章前,必须先申明一下,本人是技术出身,对HTML技术及手机客户端都有过编程经验,只是出于工作岗位的变动,便没有再具体代码工作,以下文章涉及的中间件的基本代码实现及前期的API使用,都是自 ...

  2. 混合应用开发:Phonegap VS AppCan

    混合应用开发:Phonegap VS AppCan 简介 Phonegap PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台.它使开发者能 ...

  3. (转)Phonegap VS AppCan

    简介 Phonegap PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台.它使开发者能够利用iPhone,Android,Palm,Sym ...

  4. AppCan试用体验

    最近自己想开发一个基于Android平台的小应用,但不想使用JAVA开发,还要快速实现功能,学习成本低. 所以找了很多框架,最后基本锁定在phoneGap和AppCan,又看了AppCan与phone ...

  5. 开发node桌面级应用工具:apk转化epub

    随着苹果ibooks对国内的开放,最近接了个麻烦的需求: 把现有的APK转化支持苹果ibooks电子书的epub格式 apk,基本都知道就是安卓的应用程序 epub,是ibooks支持的电子书格式 ( ...

  6. 基于.NET平台常用的框架整理(转)

    自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的 学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到, ...

  7. Index

    我主要在研究.NET/C# 实现 PC IMERP 和 Android IMERP ,目的在解决企业通信中遇到的各类自动化问题   分布式缓存框架: Microsoft Velocity:微软自家分布 ...

  8. 【转】基于.NET平台常用的框架整理

    自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累 了一些开源的组件,就目前想到的先整理于此,如果再想到, ...

  9. 基于.NET平台常用的框架整理

    自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...

随机推荐

  1. 前端VUE框架

    一.什么是VUE?  它是一个构建用户界面的JAVASCRIPt框架  vue不关心你页面上的是什么标签,它操作的是变量或属性 为什么要使用VUE? 在前后端分离的时候,后端只返回json数据,再没有 ...

  2. Highcharts 环境配置

    Highcharts 环境配置 本章节我们将为大家介绍如何在网页中使用 Highcharts. Highcharts 依赖于 jQuery,所以在加载 Highcharts 前必须先加载 jQuery ...

  3. 解决PLSQL Developer 插入中文 乱码问题(转)

    原文地址:解决PLSQL Developer 插入中文 乱码问题 PLSQL Developer 插入中文 乱码问题,如图     这个是由于oracle服务器端字符编码 和 Oracle 客户端 字 ...

  4. Eclipse导入Oracle/MySQL数库驱动包教程

    在操作数据库时除了import相关的SQL类外,还得在项目中导入数据库的驱动才能连接和操作数据库. 而数据库驱动jar包在默认Java的lib里是没有的,要自己到官网下载导入:本教程以Oracle为例 ...

  5. find中的-exec参数

    1.find中的-exec参数 在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行 find ./ -name "*.txt" -ex ...

  6. py requests.get

    import osimport requestsimport jsonfrom Util import Propertiesprint('########[公务员自助列表]############## ...

  7. Win10系列:UWP界面布局基础2

    属性设置 在面向对象程序开发中,所提及的属性通常指的是对象的属性.在XAML代码中,定义元素时也可以为其设置属性,例如对于一个TextBox元素,有背景属性.宽度属性和高度属性等.为了满足实际应用的需 ...

  8. day05 数据类型

    一.整形int 基本使用: 1,用途:记录年龄\等级\各种号码 2定义方式: age=18     age =int(18) x =int(‘123’)#只能将纯数字的字符串转换成整形 print(t ...

  9. python select poll epoll的区别

    select 优点:为最早的异步io处理模块,他可以再linux上和windows上使用,跨平台兼容性好,而poll和epoll都不能在windows系统环境中使用. 缺点:select的机制决定了他 ...

  10. CSS(一)属性--border边框

    HTML代码 <body> <div>举个例子</div> </body> CSS代码: div{ font-size:12px;  //字体大小,默认 ...