麻烦问一下我想知道html5+ plus可以调用手机的原生功能比方说什么相册啊,联系人啊,加速器啊等等,那phonegap框架也是可以调用这些功能了,他们什么区别呢,如果我用html5+plus了是不是就不用phonegap了?为什么现在好多人还在用phonegap呢
- 发布:2014-11-20 10:08
- 更新:2019-05-30 19:26
- 阅读:50468
此问题很早,提问时HBuilder刚推出不久,相比成熟的phonegap,当时还有人询问为什么用phonegap的人多。
从2015年起DCloud的市场占有率已经超过了phonegap/cordova。下图是百度指数对比:
目前DCloud的产品份额已经远超cordova/phonegap数倍。在DCloud2018年推出uni-app后,产品优势愈发明显。
cordova的包都是单页应用,拓展能力可以通过插件解决,但性能问题严重。也就是因为web的性能即使是靠spa也无法解决,所以微信放弃了js sdk改做小程序。小程序类框架都是从DCloud的5+演变而来的,包括原生的窗体动画,长列表下拉刷新且滚动条不通顶、左右拖动长列表、以及iOS上左边缘拖动返回上一个页面...
如果spa真能解决问题,那不止是DCloud傻帽了,微信、支付宝、百度、今日头条等做小程序的都傻帽了,大家内嵌一个cordova做小程序得了。
====================以下为历史回答,内容仍然有效==================
phonegap自己的定位是混合开发hybrid,用原生+js;
HBuilder的定位是纯js搞定一切。
5+ 和 phonegap在能力、性能、开发便利性上都优于phonegap。
先看能力:
- 5+ 有HTML5+和Native.js技术,HTML5+包含常用的跨平台的几百个API,能满足常规开发需求,而Native.js把40w原生api映射成js对象,这样js可以直接调原生。HTML5+和Native.js的组合形成了最强大的能力引擎。 而phonegap需要用原生工程师写原生插件并给js开发者封装接口才能实现js调原生能力,开发成本、对人的要求都不一样。
- 当然5+ 也支持原生插件,这点和phonegap类似。一个已经写好的原生sdk,无需使用Native.js重写,也可以通过5+ sdk来集成。详见文档中心 - 5+ App - 5+ SDK
- 5+的直接封装的跨平台api比较全,二维码、摇一摇、地图、微信分享、语音输入、推送这些常用api都是跨平台的,使用方便简单。详见 http://www.html5plus.org/
再看性能:
phonegap做的app,在低端Android手机上很难流畅运行,否则HTML5早就火了,原生开发早就被挤压了。Phonegap为了避免HTML5的体验不佳,采用了spa模式,但这个模式其实在低端机上也玩不转,而且代码非常复杂。
5+ App的性能更高,它的动态效果都是被我们的增强引擎处理的,通过增强的引擎,可以在低端机上流畅的运行各种动态效果,比如侧滑菜单、下拉刷新、长列表滚动,见 官网首页 - App选项卡- 性能视频
最后看开发便利性:
phonegap没有专业开发工具,语法提示、调试、打包都很麻烦。
而在HBuilder里,5+的语法api提示非常完善;
把手机通过数据线连上电脑,HBuilder可以真机运行,保存一个页面立即在手机上看到效果,Android上还可以看console.log。而用phonegap,你改完一个页面,不得不先打包,然后安装在手机上,然后发现不对,然后改下代码,然后继续打包。。。
关于打包,phonegap由adobe提供了云打包,但需要先在本机准备资源,然后提交到国外的服务器,而HBuilder是一键打包,更加方便。当然phonegap和HBuilder都支持本地打包,那样就需要点原生开发知识了。
除了工具和runtime,还有mui框架
phonegap只是一个手机runtime,没有HBuilder工具,更没有Mui框架。
mui是目前最接近原生App的HTML5框架,它的体验比jqm、bootstrap等框架更接近原生,它的性能远高于jqm、bootstrap、Ionic、framework7等框架。
这种性能差别原因有2,一方面是设计思路不同,mui坚持用原生js做,不依赖jquery或angularjs,因为框架的依赖越多,App性能越差;另一方面是因为mui调用了5+的底层原生加速,这比不带原生加速的框架更快。
mui详见:http://dcloudio.github.io/mui/
当然phonegap有一个优势,就是能支持windows phone、blackberry,这方面5+确实没有支持。
通过上述比较,应该一目了然了。如还有问题,可再探讨
40w原生api映射成js对象。
请问是否需要Android功底才能顺利使用这些js对象。
另外,官网提供的Native.js。能否提供一个40w原生API的文档说明,类似HTML5 的文档的这种,工程浩大,可以号召网友参与,官方审核。
比如native.js每个API都要区分android与ios,这岂又不是一个平台一套API,跨平台性比phoneGap差吧?而且Phonegap不仅支持anodriod和ios,还支持windows phone和黑莓。
我最近也在考虑公司的项目要不要更换框架,我想得到的信息是HBuilder官方的态度!因为HB是新兴起的框架,插件太少,做下来这段时间,发现技术支持方面也有很多缺陷,很多东西都没有得到很好的解决,虽然官方技术顾问的态度非常赞,也一直不遗余力的为我们解决,但结果还是不理想!如果HB官方态度能给我们足够的信心,那我们也愿意去尝试下一起去壮大HB家族!
-
我们肯定是不遗余力的继续完善产品和开放生态体系。哪个产品都有坑,但我相信DCloud对未来的产品判断比其他竞品更准,使用mui的多端发布、进行流应用发行,这些都能够再更大层面上解决开发者的关键问题。
2015-10-16 20:50
-
我也遇到同样的问题,之前的项目都是使用appcan框架的。换到hb主要原因是这个ide实在太好用了。
但是还有一些担心,比如引擎会不会随着第三方插件的改变而改变。
比如,ios升级9以后,像第三方应用的调用使用了白名单机制
使用了schame机制。这些hb是否可以随着更新
另外 ,目前我还没有找到事件机制来实现多webview之间进行通信,是否有这个方案?
2015-11-29 18:19
我使用HB一段时间后,我总觉得并不好用.1.文档不齐全,很多需要去看源码来解决.2.5+Runtime总觉得有Bug还是怎么着,例如我在IOS上能跑的程序,在Android上Downloader同一个地址却失败.还有比如说Speech的options中一系列的事件都没有被调用,完全坑爹.我真的无言了.
-
坑吧,肯定还是有的,但cordova的坑也不少。5+有什么问题,反馈给我们,比如downloader的问题,我们确认是bug肯定会改的。
2015-11-02 20:05
-
回复 DCloud_heavensoft:Downloader在IOS下正常,在Android4.4(小米4)上面下载http://tsn.baidu.com/text2audio?tex=阿尔龙&lan=zh&cuid=99000693039051&ctp=1&tok=24.29a838a1493f948b0372cf96c2b661c9.2592000.1449128759.282335-6266855&spd=5&pit=5&vol=5&per=0 这样的地址会返回下载成功的信息,但是文件为空,tex=阿尔龙替换为短英文可以成功,如果长英文就会出现一直下载,没反应.
2015-11-03 15:45
也在关注,选择起来比较困难。编码工具是影响生产率的重要因素,这方面hbuilder占优;cordova只是一个runtime,但cordova是apache的项目,技术支持会强很多。在中国做开源和开放的项目不容易,期待hbuilder的尽快成熟!
之前一直用cordova,目前公司新项目想试一下DCloud,但是接触了几天发布关于DCloud的文档非常简漏,新建一个H5项目如何本地打包都找不到完美的解决方案!有点失望。
按你说的是5+优点多。可是,我现在就想用个手机app图片上传功能,想用MUI。
1,用了MUI,不是只引用的页面a标签不能用了,是被打包的整个wap站的a标签都不能用了。
2,用了MUI,只能用Hbuilder打包成app才能用,直接放手机浏览器上js是失效的。
3,调试的时候头部导航栏,title属性设置成false,导航栏依然显示,无法去除。
嘿! 我都用过phonegap是Adobe公司的其实Cordova也是Adobe公司的但是记住Adobe的产品有一个特点不会懂开发的人也能变成会用最后Adobe将cordova送给了Apache,其实phonegap也是用cordova打包的。
三者之间的区别
h5+属于国内 ,打包app属于云打包,属于webapp支持(indexdb和sqllit)web端量大数据库。不需要什么环境代码编写和性能比较好。比较稳定维护性需要依赖一下框架。使用人类中国,使用人群初级或者中级开发工程师。
phonegap 没有开发基础都能开发 打包基于本地需要cordova进行打包
Cordova本地打包需要安装jdk和sdk,还需要安装xcode不是mac电脑还不好打包成ipa的文件。性能稳定可以配合angular的一个移动端框架ionic进行开发,性能在webapp上目前还没有cordova+ionic打包出来的app性能好出了原生app和google的flutter框架。使用人类全世界。会用人群高级,终极开发人员。
个人顺便想说一下国框架还是可以的,但是说实话,Google的Angular,fiutter等等的一些框架还是很6b的反正比vue吊多了虽然我做了三年的vue开发,知道vue3.0我才绝他不是非常非常的垃圾以前我觉得他比avalon还垃圾现在看来连个都是一样的差不多,毕竟angular是一个前后端都能写的框架没有之一,没错angular前端能写后台也能写,可以了解mean.js这个就是angular写前后端代码的框架我在美国的时候我几个国外朋友都用法,出了中国其实世界上mvvm框架用的最多的是angular。
waybi
问一个题外话,既然上文观点一直强调接近原生,那就是还没达到原生,那为何这几年html5一直那么火,它的优势到底在哪里,为何那么多公司抛弃ios,Android开发 而用h5开发,暂时先那么多
2014-11-21 23:25
DCloud_heavensoft
HTML5这几年没火啊,这几年还是原生的天下啊。HTML5的优势,参加这个文章 http://www.csdn.net/article/2014-11-06/2822513-how-html5-changes/3
2014-11-22 02:04
钊有
平台封装的地图这块封装的不是很好,界面切换就会出现黑屏现象。
2016-12-19 14:52
1***@qq.com
楼上的看你吹牛皮吹的我一愣一愣的,好好说话。我做移动端这么多年最服你,调取手机基本的设备Cordova/phonegap/H5plus没有太大的区别,1、Cordova的优势可以打包桌面应用程序。2、Cordova插件库非常丰富非常多比如说Cordova-SQLLite你看看在国内除了原生appH+和uni-app能不能用还有很多我不一一说出来。 但是nui-app可以做微信小程序和支付宝小程序,这个国外框架Cordova做不了。我作为一个技术爱好者个人觉得国外的好用一些,国内的相对而言好用一些。但是一般做非常庞大的体系或者比较复杂的个人建议用国外的(1、国外的稳定从框架上我没觉得国内性能能超过Cordova,后者后出来的性能怎么能超过前者记住姜还是老的辣,不是我在无视国内技术,国内唯独VUE(WEEX)我觉得不错,而且VUE的开发者是一个国籍华人从小人家是在国外长大的,只不过是中国的血统。)
所以都上当你对H5+或者对mui、uni-app玩得非常六的时候可以说它的好处,但是没深入玩过Cordova、Electron等等就不要说性能不好、毕竟我都玩过!
2019-01-16 17:34
DCloud_heavensoft
回复 1***@qq.com: 我真的也服了你了,你真的研究性能吗?整个业内说的网页性能不好,所以要做小程序,大家都是傻子吗?cordova的包都是单页应用,一堆一堆的性能问题,要是spa能解决问题,大家干嘛还要做小程序呢?小程序类框架都是从5+演变而来的,都是原生的窗体动画,都可以长列表下拉刷新且滚动条不通顶,都可以左右拖动长列表...照你的说法,DCloud、微信、支付宝、百度、今日头条都是傻子,内嵌一个cordova框架做小程序算了
2019-01-17 03:02