读两遍官方对H5+这个技术的概述以及自家Hbuilder如何和H5+进行一个生态结合的,总结下自己的认识和一些疑问吧。
1.H5+是什么?
文档原话:
HTML5 Plus移动App,简称5+App,是一种基于HTML、JS、CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实现与原生App同样强大的功能和性能。
字面上看也很清楚,我们在编写APP的时候用的是,WEB语言,也就是所说H5,但是我们希望和移动设备进行一些交互,调用手机上一些原生的东西,这个时候H5+的“+”就体现了,在原有的基础通过夸张JS API,供我们来调用原生的一些东西。大致的干了这么一件事,用JS语言把原生的功能包裹起来,作为一个JS对象,供外部JS调用。如果说原生语言在操作一个原生功能的时候,比如摄像头,应该是原生言语直接唤醒设备,那么H5+,需要JS语言访问API,API里再去调用设备,比前一种多了一步,这个在后期会不会对性能上是一种损耗,这是我的疑问吧。
文档原话:
HTML5+规范是一个开放规范,允许三方浏览器厂商或其他手机runtime制造商实现。
因为是开放规范,没有什么严格的标准,大体上大家应该都是奔着实现这样功能去的,所以各家封装各家的东西吧。在Hbuilder下对这些原生能力的调用分为了两种,一种是通用的,也就是跨平台的,比如plus.speech安卓和ios上都能这么写,还有一种是因平台而异的功能,根据各个手机系统的特性进行了独立调用,通过plus.ios和plus.android来调用,这几十万种由原生API封装的js对象都保存在了native.js这个文件中,官网也有对应的API手册。
文档原话:
使用HTML5+开发的移动App并非mobile web页面。这是新手最容易混淆的地方。mobile web的文件存放在web服务器上,而移动App的文件存放在手机本地,编写移动App的html、js、css文件被打包到ipa或apk等原生安装包,在手机客户端运行。
这部分内容都是解释一件事,我们的东西和webApp不一样,因为苹果和谷歌都不允许只是单纯的嵌套了webView壳子的WebApp上架,他们觉得那是垃圾App。H5+开发的App也确实不同于套壳APP。首先他们确实有本地内存的文件的,一个App基本该有的,包括一副本地的架子还有控制层的东西都是在本地的。但是它又不同于那些混合动力开发的App,因为混合动力开发的App是原生层和H5层共存,或者有更高端的是可以交互的,兄弟层的通信(···实力有限,只能用大致去描绘这种感觉),而H5+确实也算混合动力,但是原生和H5之间并不是兄弟关系,原生API更像是前后的关系,API作为站在H5背后的支撑体,你需要原生为你做的,API都会为H5进行需求补给,是一种单向的行为,单纯的由API原生层为H5层传递。
概念性的东西大概就这样了,后续都是一些调试,打包,发布的细节,总之H5+可以理解成H5在移动端的开发语言吧。比如有的app可以说是用OC语言开发,你可以说这个是H5+开发的。但是毕竟H5+不是一门独立的编程语言。
另外,前天对Mui的总结,因为只是单纯的看了一些网上人的评价,我感觉写的还是有偏差的,Mui应该算基于nativejs对一些常用原生对象包括UI层进行了整合封装,也说了只是一部分功能。确实如果真的比较起来也是RN和H5+这样一个整体进行比较更合适。
继续学习·····