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


方案二(编译转换方式)
优点:
利用自己熟悉的语言,进行应用开发,比如,就是使用Ruby语言去做iOS开发,开发起来的话,代码量是数量级地下降啊 。部分开发工具提供跨平台的功能,让你的应用能够快速地发布到不同的平台上面 。比如Mono社区的,就是典型的例子了 。使用C#语言,能够把你的应用发布到iOS,以及市场上面; 开发出来的程序运行高效 。大部分这种架构的应用,其实还是非常依赖底层的东西的,而且包括界面的东西,都是使用原生的API,效率就当然要比类似于这种架构要好了;
缺点:
严重依赖于其工具厂商提供的工具包,调试的时候就要有全套的工具 。当然一般来说这些厂商都会以收费的形式发布他们的工具,相应的也有客服提供技术支持 。遇到系统升级,第三方sdk升级,开发工具出现bug等,那么就要等待工具厂商解决了 。相当于把风险压在对方身上了,自己却要承担责任 。
方案三(架构为重)
优点:
这无疑是最稳定的 App开发方式了,交互层的效率上由的东西解决了,而且架构上基本就是在App内写网页,连App Store都是采用了该种方案; 开发时分工非常明确,底层的由iOS开发人员处理,上层的由Web前端开发人员处理; 有效的在线参数配置方式,以便于及时在线替换界面;
缺点:
团队至少需要两个工程师,一个是Web的,一个是iOS的 。当然如果开发人员会两种技术也可独立承担; 还是运行效率,要权衡好多少界面采用Web来渲染,毕竟的效率会相对降低,以前就是因为Web的渲染效率低下,把整个应用改为原生的解决方案 。当然这里面可以通过优化来解决 。但是优化也是有限度的,如Ruby创始人Matz所说优化要恰当(包括花的时间,技巧等),而且有时候的优化达到的回报率不一定达到你自己的期望 。App和 App开发对比
因为方案三中的思想基本上就是原生应用的开发思想了 。这里要做的对比应该不算大,因此笔者不会做太多的阐述介绍两者的不同 。但是如果是偏重Web架构的,或者是以方案二这种透过特殊工具开发的,就和原生开发有对比了 。这次笔者暂时会以方案一拿来讨论 。讨论中主要会以架构,代码管理上来讨论,当然也会说到部分细节 。
架构讨论:
因为这是偏重于Web开发的应用,这里面就需要开发人员有很强烈的大型Web前端架构思想在里面 。提到这里可能马上浮现在你脑海中的词语就是:.js,.js,sea.js,.js等 。没错,这些工具都能够帮助你快速地梳理好思路,管理好你的Web应用 。对开发者最友好的,发挥空间最大的非莫属了 。所以笔者就会以应用展开讨论 。(因为类似也有提供方案,但是本身是一个重量级的框架,而且有自己的思想在里头,加上他本身也提供开发工具,在这里就不适合讨论了 。对于开发者来说可以根据自己的需求选择好工具)
从工具上看:
.js
用于双向绑定,网络请求,视图管理等工作 。
.js
模块化工具,在使用较多的交互对象,插件的时候,你就会发现一个强大的模块化工具会在开发的时候提供极好的帮助 。能够帮助你把整体的代码,管理得井井有条 。
Jade
模板引擎 。笔者个人比较推荐使用Jade,而且笔者本人也在博客中多次写到Jade在不同场景下使用的技巧的有关文章 。主要是jade的语法太简洁了,而且面向JS开发人员非常友好 。如果你还没有开始使用模板引擎,赶紧加入这个队列吧,你已经落后了 。
如果你暂时还没有一个设计师,但是又急于构造一个应用出来 。就提供了多套不同风格的模板,供你使用,而且还含有不同的交互动画等 。而且也是跨平台的 。当然实际场景中,笔者觉得你会花很多时间在写css上面,因为设计总是天马行空的 。当然你还有很多工具啦,例如sass,以及less.js等 。