同为Hybird框架,Cordova/PhoneGap和AppCan有什么异同?
同为Hybird框架,Cordova/PhoneGap和AppCan有什么异同?
本人12年开始做APP开发,写过一段原生,后来老板想省钱,开始用H5。那时候国内也没啥可选择的,就一个AppCan ,前前后后做了十来个应用,期间也研究过
PhoneGap(Cordova引擎),算是一个老鸟了吧。在此总结了一些技术心得,使用Cordova引擎的工具 和AppCan的几点对比,供新手参考下。
先普及一些基础知识:
关于Hybird模式,百度上已经有很多介绍了,它集合网页APP和原生APP的优势,表面上和Native App没啥区别,但只有一个UI WebView,里面访问的是一个Web App。
AppCan:国内Hybird跨平台的代表,底层技术都是自己研发的,AppCan引擎、AppCan打包编译服务器、AppCan IDE…整套都是AppCan的,体系和适配性比较好,在国内还是很赞的,但是细节稍差,比如文档,普遍感觉不清晰,他们自己也意识到这点,最近的更新勤快了。对开发者免费,对企业收费,体系比较完整,工具、平台、服务都很稳定,总体感觉,稳定实用,但不新潮。
Cordova:是驱动PhoneGap的核心引擎,和PhoneGap的关系类似于Webkit和Google Chrome。自然的,PhoneGap核心优缺点,也与Cordova密不可分,比如SPA模式(单页面)。目前国内也有基于Cordova引擎的,做了不少优化,比如使用了xid、CSS页面域、RequireJS等技术填SPA模式的坑,但个人感觉治标难治本。
再来说基于两种引擎的开发工具,所表现出的区别:
1.开发模型不同:单页面VS 多窗口。
如上所说,Cordova/PhoneGap 是SPA模式(单页面模式),所有基于Cordova的开发工具也必然是SPA模式,所有的网页都运行在这个窗口当中,这导致Cordova写出来的应用失去了很多native应用的原生特性。这种模式在开发移动应用时需要自行处理各种冲突。例如元素ID冲突,CSS样式冲突、JS变量冲突。即便,有些工具使用了xid、CSS页面域、RequireJS等技术来解决,需要开发人员投入更多精力去处理。比如,使用SPA模型可以降低JS、CSS等资源的加载时间,通过RequireJS等工具实现随用随加载,但是在目前网速下,意义不是很大。单个移动应用界面包含的资源已经很少,这种异步加载也是由于使用了SPA模型后,为解决自身问题所添加的。
AppCan是uexWindow,即多窗口机制对象,是AppCan区别于同类产品的最大特点,对应用底层代码,就是多个webview实现核心引擎的跨平台能力。每个窗口独立存在,可以相互跳转,并且可以指定一个跳转时的过渡动画效果,如此一来,用户体验效果就非常接近native应用了,并且不存在影响效率的问题。通过对操作系统和系统中浏览器引擎底层Webview及其API的封装和扩展,将原本不支持本地功能的HTML标准,以Javascript API接口的形式开放给HTML页面调用,同时提供一套完整的Callback机制,实现HTML页面直接与操作系统底层的交互通信,实现系统与HTML页面的无缝融合。
但是对于SEO,单窗口优于多窗口。AppCan框架主要用于开发移动应用,但也提供能力转换为网站,但这个网站就是B/S的MPA模式了,性能上会比SPA方式差,由于界面也是使用AJAX在前端组装,对SEO支持不够。如果要支持SEO的话,目前在国内还是要进行后端拼装的。
2.UI框架:BOOTSTRAP框架VS 弹性盒子模型
Cordova/PhoneGap采用BOOTSTRAP框架作为界面布局方案。BootStrap作为响应式布局,可以简化网页排版。做到移动应用、PAD、PC浏览器全兼容。但是由于全兼容,库会比较大,尤其在移动端体验和响应不好;其次由于BootStrap使用CSS3的Media Query技术对界面进行排版,这时无法保证最大屏幕显示精度,移动端显示时,会在一些终端出现一定的显示粗糙感。例如边框1个像素,实际显示不是一个像素,造成效果降低。Android终端中使用BootStrap框架响应会比较慢。
AppCan 采用弹性盒子模型,专为移动应用、网站进行设计,更加轻量。通过原生适配技术,可以使界面效果与原生应用相同。AppCan采用MPA模型,即多页面模型,单个页面负责单独的事情,开发人员不需要考虑冲突、加卸载、变量隔离等由于采用了SPA所引起的问题。AppCan界面间动画采用原生实现,相比于JS的界面间动画,体验会更好。
3.原生能力:
AppCan采用自主知识产权的引擎,可以提供更多的原生组件能力,又开放了原生插件扩展机制,可以比较灵活的自定义插件扩展架构,方便开发者集成自定义功能到应用开发。尤其是国内特有的各种组件,都进行了商业化的运营维护,例如微信等,扩展性强。引擎中封装的原生插件调用部分代码,支持插件的同步/异步调用,允许插件直接返回值给前端,调用更加简单。
PhoneGap/Corovda在设计时按照SPA模型进行的支持,因此在开发复杂度、体验上都有一定的弱点。而基于Corovda的跨平台工具,需要自行编写原生组件,并且打包会更加复杂。
最后来个总结:
不复杂的应用,做DEMO、做演示,用基于Cordova的工具就可以,如果有原生开发能力更是加分。复杂的、企业里的、需要长期作战的,还是使用国内的好,毕竟APP开发和管理不是快消品,本地化的技术支持和服务非常重要;而且更了解国内的市场,让老外跟上国产手机的更新速度,不现实。
除了PhoneGap/Corovda、AppCan,还不不少跨平台工具,到底使用哪个,一试便知。反正都是免费的,都有案例,下载到手机上试试,看看运行速度,看看体验。下载个开发环境,写几行代码感受下。
PhoneGap(Cordova引擎),算是一个老鸟了吧。在此总结了一些技术心得,使用Cordova引擎的工具 和AppCan的几点对比,供新手参考下。
先普及一些基础知识:
关于Hybird模式,百度上已经有很多介绍了,它集合网页APP和原生APP的优势,表面上和Native App没啥区别,但只有一个UI WebView,里面访问的是一个Web App。
AppCan:国内Hybird跨平台的代表,底层技术都是自己研发的,AppCan引擎、AppCan打包编译服务器、AppCan IDE…整套都是AppCan的,体系和适配性比较好,在国内还是很赞的,但是细节稍差,比如文档,普遍感觉不清晰,他们自己也意识到这点,最近的更新勤快了。对开发者免费,对企业收费,体系比较完整,工具、平台、服务都很稳定,总体感觉,稳定实用,但不新潮。
Cordova:是驱动PhoneGap的核心引擎,和PhoneGap的关系类似于Webkit和Google Chrome。自然的,PhoneGap核心优缺点,也与Cordova密不可分,比如SPA模式(单页面)。目前国内也有基于Cordova引擎的,做了不少优化,比如使用了xid、CSS页面域、RequireJS等技术填SPA模式的坑,但个人感觉治标难治本。
再来说基于两种引擎的开发工具,所表现出的区别:
1.开发模型不同:单页面VS 多窗口。
如上所说,Cordova/PhoneGap 是SPA模式(单页面模式),所有基于Cordova的开发工具也必然是SPA模式,所有的网页都运行在这个窗口当中,这导致Cordova写出来的应用失去了很多native应用的原生特性。这种模式在开发移动应用时需要自行处理各种冲突。例如元素ID冲突,CSS样式冲突、JS变量冲突。即便,有些工具使用了xid、CSS页面域、RequireJS等技术来解决,需要开发人员投入更多精力去处理。比如,使用SPA模型可以降低JS、CSS等资源的加载时间,通过RequireJS等工具实现随用随加载,但是在目前网速下,意义不是很大。单个移动应用界面包含的资源已经很少,这种异步加载也是由于使用了SPA模型后,为解决自身问题所添加的。
AppCan是uexWindow,即多窗口机制对象,是AppCan区别于同类产品的最大特点,对应用底层代码,就是多个webview实现核心引擎的跨平台能力。每个窗口独立存在,可以相互跳转,并且可以指定一个跳转时的过渡动画效果,如此一来,用户体验效果就非常接近native应用了,并且不存在影响效率的问题。通过对操作系统和系统中浏览器引擎底层Webview及其API的封装和扩展,将原本不支持本地功能的HTML标准,以Javascript API接口的形式开放给HTML页面调用,同时提供一套完整的Callback机制,实现HTML页面直接与操作系统底层的交互通信,实现系统与HTML页面的无缝融合。
但是对于SEO,单窗口优于多窗口。AppCan框架主要用于开发移动应用,但也提供能力转换为网站,但这个网站就是B/S的MPA模式了,性能上会比SPA方式差,由于界面也是使用AJAX在前端组装,对SEO支持不够。如果要支持SEO的话,目前在国内还是要进行后端拼装的。
2.UI框架:BOOTSTRAP框架VS 弹性盒子模型
Cordova/PhoneGap采用BOOTSTRAP框架作为界面布局方案。BootStrap作为响应式布局,可以简化网页排版。做到移动应用、PAD、PC浏览器全兼容。但是由于全兼容,库会比较大,尤其在移动端体验和响应不好;其次由于BootStrap使用CSS3的Media Query技术对界面进行排版,这时无法保证最大屏幕显示精度,移动端显示时,会在一些终端出现一定的显示粗糙感。例如边框1个像素,实际显示不是一个像素,造成效果降低。Android终端中使用BootStrap框架响应会比较慢。
AppCan 采用弹性盒子模型,专为移动应用、网站进行设计,更加轻量。通过原生适配技术,可以使界面效果与原生应用相同。AppCan采用MPA模型,即多页面模型,单个页面负责单独的事情,开发人员不需要考虑冲突、加卸载、变量隔离等由于采用了SPA所引起的问题。AppCan界面间动画采用原生实现,相比于JS的界面间动画,体验会更好。
3.原生能力:
AppCan采用自主知识产权的引擎,可以提供更多的原生组件能力,又开放了原生插件扩展机制,可以比较灵活的自定义插件扩展架构,方便开发者集成自定义功能到应用开发。尤其是国内特有的各种组件,都进行了商业化的运营维护,例如微信等,扩展性强。引擎中封装的原生插件调用部分代码,支持插件的同步/异步调用,允许插件直接返回值给前端,调用更加简单。
PhoneGap/Corovda在设计时按照SPA模型进行的支持,因此在开发复杂度、体验上都有一定的弱点。而基于Corovda的跨平台工具,需要自行编写原生组件,并且打包会更加复杂。
最后来个总结:
不复杂的应用,做DEMO、做演示,用基于Cordova的工具就可以,如果有原生开发能力更是加分。复杂的、企业里的、需要长期作战的,还是使用国内的好,毕竟APP开发和管理不是快消品,本地化的技术支持和服务非常重要;而且更了解国内的市场,让老外跟上国产手机的更新速度,不现实。
除了PhoneGap/Corovda、AppCan,还不不少跨平台工具,到底使用哪个,一试便知。反正都是免费的,都有案例,下载到手机上试试,看看运行速度,看看体验。下载个开发环境,写几行代码感受下。
yongbuyanbai2- 帖子数 : 5146
注册日期 : 12-08-31
您在这个论坛的权限:
您不能在这个论坛回复主题