文章: Calatrava:自由构建UI的跨平台移动框架

标签: 文章 calatrava 自由 | 发表时间:2012-11-06 16:00 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

移动是未来计算的趋势,越来越多的人使用移动设备来访问互联网。但是目前至少三大平台:iOS、Android、移动Web。相比桌面Web,移动用户需要更好的体验、界面和设计。然而移动设备受限于电池、不可靠的网络连接和小尺寸屏幕。

几个月前,Martin Fowler写过一篇关于开发跨设备移动应用的 文章。他指出,要获得最佳用户体验,最直接的办法就是针对每个移动平台开发一个本地应用,但这却将带来极大的成本。或者选用跨平台工具箱,“一次编写随处运行”?然而没有几个产品真正获得成功。Web应用程序倒是可以以较低成本运行在跨平台之上,但是用户界面又受到限制。因此,不可避免地要在用户体验和成本之间做出选择。

或者,折中的办法就是开发混合式(hybrid)应用程序:结合Web和原生应用。

ThoughtWorks 探索这条路并取得一些进展,最近发布了 Calatrava开源框架。Calatrava的思路是开发者用跨平台的JavaScript编写客户端逻辑,这部分代码完全相同,运行在iOS、Android、移动Web的JavaScript解释器中。Calatrava提供本地桥接,允许逻辑来驱动原生UI。

它将移动应用程序分成两部分来考虑:UI和客户端逻辑主体(headless-body)。开发者使用JavaScript代码开发通用的控制器逻辑,而原生代码处理UI部分生成原生外观(native veneer),可移植的JavaScript代码和原生代码之间能够互操作,进而开发出混合移动应用。

Calatrava本身并不提供任何UI框架或建立UI抽象层。在iOS上,就用Objective-C和Cocoa Touch框架来构建UI;在Android上,就用Java和Android库;在移动Web上,就用HTML5、CSS3和你喜欢的JavaScript库。跨平台逻辑层与代表着应用表现层Page对象进行交互,该对象提供了从显示和交互机制中分离出的API接口。很多时候,对于移动应用来说,HTML5 UI已经足够好,所以Calatrava也允许在iOS和Android上桥接HTML5,但是应用绝不会绑定在HTML UI上。

这样,每个平台都有具有了自己独有的UI设计,避免了“恐怖谷效应”(uncanny valley effect)。应用开发可以从HTML UI开始,当你觉得某些地方不够好的时候,就用原生UI替换掉,且只对部分平台进行替换,而不影响其他部分。同时你也可以享受某些平台特有的UI特性。

Calatrava适合包含较多复杂的客户端逻辑的应用,且当应用偏重于成为现有产品的新渠道(Channel),而非产品本身。如果应用的大部分代码是UI部分(如游戏),或是已经提供非常好的用户体验的Web应用,Calatrava就不太适合了。 Calatrava编写的核心JavaScript逻辑支持使用 Jasmine进行单元测试,以及使用 cucumer.js进行功能测试。

想试试吗?从github的 Caltrava主页可以找到说明,简单来说就是下面几步:

  1. 安装依赖:Node.js, Ruby, Xcode, Android.
  2. 安装Ruby插件gem install calatrava
  3. 使用Calatrava工具创建项目calatrava create sample
  4. 编译并运行项目

Calatrava还处在早期开发阶段,估计还是会有很多bug,另外插件、模块和文档也需要完善。

Martin Fowler分析了用户体验和可负担能力之间的动态平衡,他认为混合式(hybrid)解决方案介于纯本地应用和纯Web应用之间,更适合增量式发布。即首次发布(release)采用纯Web UI,之后的发布(release)逐步将Web UI转为本地UI特性,或逐步地增加本地UI特性的比例。

MartinFowler认为Caltrava最有价值的地方就在于它适合 增量式发布策略。比如 cover-your-bases策略,即当你已经有大量用户基础,而移动应用定位为现有产品的新渠道(channel)。由于现有的用户,最重要的事情是将新渠道尽快地推到尽可能多的用户面前。很明显,平台覆盖率最重要。然而在移动平台上,体验也非常重要,所以应该用最小功能集提供简化的体验,而不是提供退化的体验。


感谢 贾国清对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至 [email protected]。也欢迎大家通过新浪微博( @InfoQ)或者腾讯微博( @InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

您可能也会喜欢

相关 [文章 calatrava 自由] 推荐:

文章: Calatrava:自由构建UI的跨平台移动框架

- - InfoQ cn
移动是未来计算的趋势,越来越多的人使用移动设备来访问互联网. 但是目前至少三大平台:iOS、Android、移动Web. 相比桌面Web,移动用户需要更好的体验、界面和设计. 然而移动设备受限于电池、不可靠的网络连接和小尺寸屏幕. 创业者之翼为创业新星免费提供甲级办公场所,详情请点击. 2012RIA天地行•西南游戏开发者大会11月25日,火热报名中.

《户外探险》“十年”系列文章:我的自由之路

- Jing - 冬冬@自由之魂
    已发表的版权文章,未经许可请勿转载. 我是2002年读大一时通过清华登山队开始接触登山这件事情的. 在清华的几年里,我越来越强烈地感觉到,登山是一件让我真正喜欢、值得我把生命投入其中的事情. 2005年面临毕业时,我对未来的梦想很简单:可以自由自在地去登山,自由自在地安排生活. 虽然简单,但却似乎遥不可及,完全没有头绪该怎么做.

自由

- 三天 - 地球没有好朋友
我的革命战友小花常说,她小时候最羡慕的就是可以在肯德基里过生日的小朋友. 是啊,直到我上大学前,肯德基都是人间最美味的食物之一. 如果看见谁在肯德基过生日,一定会觉得那小孩的爸妈想搞行为艺术. 我现在想吃肯德基的时候就吃,也不会问吮指原味鸡或者大薯条多少钱,因为我都付得起. 每当我这么做的时候,我都心里一阵暗爽,觉得比以前自由了好多.

关于自由

- sg - 咆哮女郎柏邦妮
参加《启蒙的艺术》这个展,对我来说,就是我的“启蒙运动“. 这周有第二次活动,我在家里准备,发现了很多关于“自由”的句子:. 自由,其实就是不被强制的自由. 促进自由的最大行动是,仿佛我们是自由的公民那样行动. 积极自由,也许就是“己所欲,施与人”,. 消极自由,也许就是“己所不欲,勿施于人. (但是王歌老师说,这个说法不确切.

文章: HTML5之美

- - InfoQ cn
如今大热的HTML5到底美在哪里. HTML5到底能为实际的移动开发带来哪些改变. 来自阿里云云手机服务运营部的前端开发工程师 正邪 (廖健)分享了他眼中的HTML5之美,主要讲诉HTML5的常见原理并从CSS、JavaScript和框架三个方面做了细致讲解:. 白伟民:酷狗音乐的HTML5实践(百度开发者大会广州站 5月31日 免费报名).

限制与自由

- zx - 左岸读书_blog
无需仔细观察,就会发现,你我的周围充斥这样的声音:. “我之所以没成功,是因为我的出生的时代不好,经过30年的改革开放,到了现在这个阶段,机会都饱和了. 我之所以没成功,是因为我的家庭比较普通,如果我生在比尔盖茨或者巴菲特的家里,我绝对会成功. 我之所以没成功,是因为我的父母把我生得不漂亮或者不帅,不然我有机会成为章子怡、王力宏之类的.

技术文章的质量

- Kai Chen - 4G spaces
推友 @StarrySource 就微薄和推特的好坏问题写了一篇文章,正好和霍炬的文章同时发出来,推特上对这两篇文章叫好的人不少,其中还有一些直接就说 StarrySource 这篇比 virushuo 写得好. 文章好坏诚然是个很主观的事情,不过就仅从文章内容来说,就算有一千个读者一千个主观标准,我也想不出什么理由来说明 StarrySource 的这篇比 virushuo 写得好,因为客观上这两篇文章的差距会抵充掉主观上的一些好恶.

英文文章編輯checklist

- friedvan - 研究生2.0
相信我,如果你想要在學術圈混下去,想要將文章投稿到國際期刊,不管是什麼領域,英文寫作都是非常重要的. 有句話是這麼說的:好的writing讓你上天堂,不好的writing帶你住套房. 不喜歡這句的話,可以換成:好的writing給你publication,不好的writing給你rejection.

文章: Grails最佳实践

- - InfoQ cn
我在IntelliGrape工作,这是一家专门使用Groovy & Grails进行开发的公司. 本文是我们Grails项目遵循的最佳实践的基本清单,收集自邮件列表、Stack Overflow、博文, 播客和 IntelliGrape的内部讨论. 它们分为控制器、服务、Domain、视图、TagLib、测试和其他.