[混合开发]HybridApp分析!!!( 五 )


用适当的工具做适当的事情
做游戏的朋友估计就深有体会了 。为了解决性能的问题,越来越多的人和应用厂商(尤其是浏览器厂商),提供一种解决方案就是希望将 API和系统底层的API打通 。意味着你只需要编写代码,实际做渲染的时候使用的是系统底层的东西,整体上提高了性能 。例如这个东西 。
对于开发人员来说用编写游戏逻辑以及做各种控制都非常舒服,而且因为用的API相同,放到PC上(放开性能问题),同样可以运行 。这就真的做到了跨平台,但是又不缺乏效率 。让笔者感触最深的就是@大城小胖在做混合应用(做游戏)时的做法,小胖的游戏架构 。JS负责逻辑,引擎 。JS 绑定原生,让原生的来做复杂的渲染处理 。HTML CSS可以处理UI(比如一些) 。这就是典型的:让工具去做其擅长的事情 。
跨平台是一个"幌子"
为什么这么说?笔者不是一直希望大家能够跨平台么?是的 。但是要真的认清这个坎 。从IE兼容,到目前多个浏览器的乱战,到iOS以及设备Web上的兼容,这不就是一个历史的例子嘛 。跨平台不是不好,只是在一个时代里,你能够达到怎样的效果,真的是很难估量的 。就好比你出国旅游,如果两国关系非常好,而且很多惯例法律一致,对你来说不会造成太多负担 。但是如果语言不一样,生活习惯什么的都不同,你就很难适应 。同样是人,你很难在不同的环境下生存 。真正的跨平台,就意味着大家求同 。这绝对不是一两天的事情,也非简单的事情 。
那为什么还要跨平台 。业务需求嘛 。在这里必须就要遵守根据需求选择工具,用适当的工具做适当的事情,根据实际情况来作开发 。如果可以,笔者觉得很有必要都了解一遍,这样的话各种开发的思想就会影响到你,你就能够分辨到什么是好什么是坏,做更好的选择 。例如笔者刚刚说到的过场动画的例子 。其实完全可以使用笔者说的混合应用中,方案三,去解决这个问题 。你无非就是希望用做一个漂亮的过场动画嘛,在iOS中几句代码就实现了 。
再说一个例子吧,如果你正在做一个todo-list的应用,其实无非就是简单存储数据以及做一些相关界面渲染 。在使用原生的控件的话,有大堆的代码要写,而且还要处理好内存问题 。但是其实如果使用Web的方式实现,比如.js 。总体代码可能100行左右 。就把整个应用实现了,包括本地存储 。你要做的事情就是把整个界面搭建得漂亮些 。可能就1个小时的工作 。但是如果用原生开发,很难保证到一个小时内完成,因为调试编译都需要时间吧?况且还有界面呢 。
所以要认清跨平台这个"幌子",并非所有的问题都用同一个方法处理 。笔者们要融汇贯通嘛!
总结和笔者的感受
对于做Web App的坑,其实挺多的 。这里无法一一表达 。但是相信实践过就会知道如何更好地绕过这些坑(例如笔者说的过场动画的例子) 。那么对于开发者来说要有坚强的毅力,努力去实践,满足自己永远不能满足的好奇心,因为最终的经验会给你带来不一样的感受,stay。同时笔者们必须保持一颗学习的心,不断地吸收有营养的思想,学习新的知识,不要太容易满足,stay。每一种语言都会有其中的思想,每一种工具都有自己解决问题的方法论 。多尝试就能够给自己带来更优秀的架构,更优秀的应用,提供给用户更好的体验 。当然,也会有更好的回报 。
关于作者
李秉骏(@李秉骏),HTML5技术活跃分子,HTML5梦工场高级成员,投入Web开发多年 。高中开始编写独立运营的电子商务网站 。近年多进行移动应用前后端的开发,并尝试将混合应用开发技术运用于实践当中 。