首先在写这篇文章前,必须先申明一下,本人是技术出身,对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. seaweedFS

    那首先我们来分析一下seaweedfs是什么?seaweedfs是一个非常优秀的由 golang 开发的分布式存储开源项目.它是用来存储文件的系统,并且与使用的语言无关,使得文件储存在云端变得非常方便 ...

  2. Educational Codeforces Round 55 (Rated for Div. 2) A/B/C/D

    http://codeforces.com/contest/1082/problem/A WA数发,因为默认为x<y = = 分情况讨论,直达 or x->1->y  or  x-& ...

  3. 兼容IE8的video写法

    <video width="100%" height="515px" controls preload> <source src=" ...

  4. 使用ajax请求接口,跨域后cookie无法设置,全局配置ajax;及使用axios跨域后cookie无法设置,全局配置axios

    问题一: 使用ajax/axios跨域请求接口,后端放行了,能够正常获取数据,但是cookie设置不进去,后端登录session判断失效 ajax解决办法: //设置ajax属性 crossDomai ...

  5. MinGW安装教程( MinGW - Minimalist GNU for Windows)

    首先说明一下 1) MinGw只是其中一种GCC编译环境的安装程序,还有像Cygwin也是差不多的; 2) 还要就是安装MinGw,最好在一个网络比较好的环境中进行,  (有可能导致后来安装其他软件像 ...

  6. centos命令行系列之centos6防火墙的关闭以及开启

    输入:cat /etc/issue   查看版本 (一)通过service命令 注:service命令开启以及关闭防火墙为即时生效,下次重启机器的时候会自动复原 查看防火墙状态:service ipt ...

  7. 【LeetCode】区间合并

    给定一组区间,将所有区间重叠的部分合并起来. e.g. 给出 { [1, 3], [2, 6], [8, 10], [15, 18] },返回 { [1, 6], [8, 10], [15, 18] ...

  8. ActiveMQ broker 集群, 静态发现和动态发现

    下载 activemq 压缩包解压后,conf 目录下有各种示例配置文件,红线标出的是静态发现和动态发现的配置. 1. 静态配置 启动3个 broker,端口分别为61616,61618,61620, ...

  9. python3+ftplib实现ftp客户端

    一.程序说明 1.1 程序实现关键点 python实现ftp客户端,主要会遇到以下四个问题: 第一个问题是使用什么包实现----我们这里是使用标准库中的ftplib 第二个问题是怎么连接登录ftp服务 ...

  10. get url img

    selenium     1● 了解selenium 这个是做 web页面测试,模拟用户测试   =====> pip install selenium 安装     2● django 用于接 ...