最近1,2个月一直都尝试开发一款Hybird app,遇到了不少问题,谈谈本身的体会。
Hybird app (混合模式移动应用),它利用例如安卓端webview组件+HTML5内嵌的方式混合的方式开发的移动应用,
好处显而易见,因为内嵌的是Html5, 因此跨平台,扩展性,开发成本都是很不错的优点。
Hybird App拥有不少从开发工具到打包发布的解决方案,比较出名的是来自Adobe的phonegap, 国内有AppCan,这2种解决方案都有比较好的工具平台。此次我采用的的是Appcan, 须要注意的是Appcan的开发工具只有windows平台的,另外不得不吐槽的是,方案里面集成的js插件脚本,bug不少。
我采用的技术架构,如图:css
其中利用Appcan做为应用的打包平台,经过其内置的JS组件进行数据请求,请求获得的数据利用JS作些业务逻辑处理后,使用AngularJS进行绑定渲染,UI组件的东西则用的GMU.js,而gmu内置了zepto.js和scroll.js等等, 页面则是h5+css3。能够看到的是与传统的web相比,其中多了很多js框架和库的应用,毕竟把数据的调用和业务处理都移到了JS端,因此在这里提醒你们,能够考虑加入js模块管理的框架,例如seajs。数据绑定这块感受Angular真的很棒,写好绑定后,只须要专一后端JS数据的业务处理便可,提高了很多开发效率。
在编码阶段遇到了很多问题,例如并不能利用url像平时那样进行参数传递,发现抓取不到页面跳转后的参数。为了减小请求次数,也尝试采用LocalStorage缓存json。经过Manifest cache 缓存html,css,js文件,来提高界面的响应速度。经过css3替代js作动画效果,可是效果并不理想,感受仍是没有js来的流畅。页面跳转白屏,数据加载的延迟等等情况,加载动画体验须要作的更好,并且尽可能减小页面的跳转,把一些功能集中到单个html文件。
总而言之,采起了不少优化方法,可是显然这种hybird app在性能体验等方面仍是问题不少,可是例如一些交互简单的app话,用这种方案仍是能够考虑的。html