【Hybrid App】Hybrid App开发实战( 五 )


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