如今的移动应用市场特点是不间断的创新、日新月异的变化、无尽的更新。在这个信息爆炸的时代环境下,需要移动应用必须快速的交付到用户。满足这些用户的多种需求,各种屏幕尺寸,操作系统,带宽,设备能力和用户体验。
这些特性对于移动开发者提出了挑战,现在做客户端开发的公司都会面临一个巨大的问题,就是跨平台。对于目前市面上的移动设备来说。Android、IOS、WindowsPhone等等移动设备系统,让我们在开发适配上都很头痛。从开发成本来说,对于开发一个简单的App,Android客户端需要1~2位同学。IOS客户端需要1~2位同学。对应UI出图也得做出最少2个版本的。不过得益于HTML5标准的建立,前端框架的发展,现在能够帮助开发人员快速的创建移动应用程序,如jQuery Mobile,Inoic和React Native。每个框架都广泛的支持不同平台,如iOS和Android,开发语言统一为JavaScript+Css。
目前的App跨平台解决方案
总的来说,现在的跨平台方案一共分为一下几种:
整体基于浏览器WebView调用Html5的web页面,加原生APP壳方案(主流)
使用第三方语言进行映射的方案
整体使用原生技术,嵌套个别web网页的方案
基于浏览器Webview的跨平台
基于WebView的跨平台解决方案相信大家已经很熟悉了,而使用Web开发对于一个Web开发工程师也是一个轻而一举的事情。
HTML5方案的主要不足则在于功能和性能方面,这主要是因为HTML5应用的能力严重依赖于系统自带的Web引擎:iOS的UIWebview、Android的Webview等,此类组件的HTML5能力相比Safari for iOS、Chrome for Android都要差一截。
而且,对于原生系统的新能优化,如JAVA的垃圾回收机制、ListView的复用内存缓存机制等等,系统级别的优化,对于使用WebView来实现的逻辑,往往很难做到。
另外在Android平台上,由于系统碎片化比较严重,不同Android版本的Webview的HTML5能力也有较大差异,导致相应的HTML5应用一致性难以保证。
但是,目前还是存在业界的几家公司提供的解决方案如下:
Fackbook的开源框架,相对于其他的JS框架来说,ReactJs提出了一个极为重要的概念。那就是Virtual DOM。
在Web开发中,我们总需要将变化的数据实时反应到UI上,这时就需要对DOM进行操作。而浏览器解析复杂或频繁的DOM操作通常是性能瓶颈产生的原因。React为此引入了虚拟DOM(Virtual DOM)的机制:在浏览器端用JavaScript重新实现了一套DOM API。借助于JavaScript在浏览器上的运算能力,提高页面的解析能力,提高性能。
jQuery Mobile是jQuery 在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。现在类似的框架还有:jQTouch、 Sencha Touch 等等。
对于Web开发来说,JQuery无疑是一个极为好用的js框架。多数开发者使用JQuery Mobile的主要原因是由于,熟悉JQuery,能够上手快。但是由于框架出的比较早,早期设计的缺陷,使得在性能方面较差,结构也没有采用目前流行的mvvm模式,开发效率较低。
IONIC 是目前最有潜力的一款 HTML5 手机应用开发框架之一。通过 SASS 构建应用程序,它提供了很多 UI 组件来帮助开发者开发强大的应用。 它使用 JavaScript MVVM 框架和 AngularJS 来增强应用。提供数据的双向绑定,使用它成为 Web 和移动开发者的共同选择。Ionic是一个专注于用WEB开发技术,基于HTML5创建类似于手机平台原生应用的一个开发框架。Ionic框架的目的是从web的角度开发手机应用,基于PhoneGap的编译平台,可以实现编译成各个平台的应用程序。
这类的框架应该算一个整套解决方案。通过针对js的封装,向web开发者,提供给一些原生功能的API。通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。API不满足开发需求的,也可以由自定义插件形式,提供原生功能给Web端使用。
跨平台的开发发难问题在于,功能基本实现不是完美实现。同一套代码要兼顾不同平台,很多实现就变成折中实现了,原本一些很优秀的平台特性为了兼顾另一个平台用不了。不过随着时间的推移,技术不断的推进,使用HTML5为基础的Web技术只会越来越成熟。"Web与Native正在融合”--在这个背景下,不管是传统的WEB开发人员还是原生APP开发人员,都应该互相学习,掌握多门技术才能持续发展。