大家好,今天我给大家介绍一款用HTML5来实现Android的应用程序开发的开源项目,Phonegap!

一提到这个项目,可能很多人早有耳闻,而且也能说出大概,对Phonegap批评声我看过也不少,主要是说其性能慢,其实我觉得不然,Phonegap还是很管用的,如果写出来的应用执行慢,大部分应该是代码本身的问题,稍后我们来谈谈如何进行性能优化,首先,我先简单介绍一下:

方法网站:http://phonegap.com/

如果你对源码感兴趣,可以去apache下载开源项目Codova(Phonegap后来改名为了Codova),源码我就不分析了,有兴趣可以看一下,简而言之,就是对Webview的一层封装,早期的Phonegap扩展性不是很好,不能无缝集成到Activity或者Fragment里,自从Phonegap 1.8之后,开始有了这个功能,大家可以去官方看一下API,如果整个应用全部用HTML5实现,那么纯HTML和JS就能搞定,但是有时必须得用Android里面的API,JS无法实现并且官方也没提供默认插件时呢, 那就得自定义了,Phonegap扩展了js方法,可以把行为传递给其扩展的Plugin的java类,在该类里面可以做一些操作,比如Activity跳转或者发送广播等等,这块的话,网上有很多资料,感兴趣的话大家可以去看看别的博主的文章就会了解,我这边就不细说了。

以上这些是我的一些个人理解,网上其他作者可能说的更详细,我就不去重复了,下面来谈谈我几个项目做下来一些性能优化的经验:

1.资源本地话,如果可能,尽量把图片和JS文件放到assets目录,这样就减少了网络请求,提升了性能,还可以把多张图片拼成1张图片,用CSS背景偏移去实现界面,这样减少了图片数量。

2.使用HTML5的SPA模式。这个需要简单介绍一下,就是把整个APP放在一个HTML里面,通过显示隐藏来展现给用户看,这方面,jquery mobile和Sencha Touch都做到了,而且还有自己的转场效果。如果不是SPA模式,那么在整个页面切换时可能出现屏幕闪烁或停顿,用户体验很差。

3.尽量不用jquery mobile和Sencha Touch这2个框架。这2个框架我都用过,Sencha Touch性能方面明显快于jquery mobile,已经无限接近原生实现,至于jquery mobile为什么慢,归功于需要引入jquery的库文件,而jquery的库文件很多是处理PC端IE浏览器的兼容性问题,移动端完全用不到,这里推荐一下jquery 2.0,这个版本是专门为手机打造的,或者你也可以用zepto来实现,zepto体积很小,淘宝网触屏版就是用的这个库,至于Sencha Touch,我的感觉像搭积木,一段时间不用又忘了,但是性能还是不错的。

4.对js功底的培养。开发者应当充分了解javascript语言特性,这个需要一定的积累,如原型,原型链,闭包,构造函数,语法糖,正则,JS常用设计模式有一定了解,如果JS太糟,写出来的应用肯对快不了,就别去怪Phonegap啦。

5.尽量使用CSS3动画,虽然JS能实现,但是有些浏览器内核本身会对CSS3进行优化,如果一个效果都能实现,那么建议你用CSS3。


今天就总结到这里吧,个人感觉Iphone上运行的phonegap应用明显快于Android,好像是几倍吧,总结方面如果有遗漏欢迎大家补充。


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐