posts - 138, comments - 1881, trackbacks - 97, articles - 13
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

我们已经研究过XHTML和CSS了,现在开始看看最后一部分,也就是JavaScript,以及它所提供的交互能力。

无AJAX交互

第一种我们要看的交互,是完全不使用JavaScript,这其中一个例子就是GMail。GMail的iPhone版其实就是由普通的GMail移动版修改过来的,界面上更贴近桌面版GMail了,然而交互性并没有怎么提高,每一个点击都对应一次刷新,没有任何AJAX可言。

事实上,不用任何AJAX效果并不会让你的iPhone Web App低人一等,如果有人讥笑你的应用没有引入任何AJAX功能,你可以直接跟他说“GMail也没有”。因此,如果你在开发的过程中决定不把任何时间投入到AJAX相关技术的研究,这是没问题的,确保你的服务器响应速度,并且交互设计得当,那就行了。

以服务器端为中心的AJAX

接下来我们看看另外一些应用,例如之前说到的几个,就拿最简单的AppMarks来说说吧。首先,使用User Agent Switch更改你的Firefox的user-agent属性,伪装为iPhone,然后打开AppMarks,并且打开Firebug。接着点Menu -> Add -> Browse,看到出现AJAX请求了吧?猜猜这个请求是什么类型的,面向内容(传输更新上去的XHTML)、面向脚本(传输进行更新操作的JavaScript)还是面向数据(传输更新相关的JSON)?答案是——面向内容的!

这可是Web App哦,不是一般带有一点点AJAX的网页哦,我们要MVC,我们要“先进”的面向数据,为什么要“落后”的面向内容呢?至今为止,我们能够看到的大部分iPhone Web Apps,都将MVC保留在服务器端了,客户端唯一需要知道的就是内容更新,不存在任何的客户端MVC模型。暂时我还没看到有面向脚本或者面向数据的,如果你见到有应用这样做了,请告诉我。

我们继续说MVC的事情。现在大多应用的设计方式是这样的:每一个应拥有一个view framework,然后每一次点击所作的操作就是切换view。例如刚才说到的AppMarks,从Menu进入Add是一个view切换,不过因为Add这个view的内容是固定的,因此一早就包含在页面里,不用AJAX请求直接加载就行了。另外一种情况,就是好像加载Browse那样,是需要AJAX把view请求过来才能加载的。除了切换view,我们还需要action,例如提交数据就一定需要action的。说到这里,感觉是不是和RoR或者类似框架扯上关系了?事实上,RoR,或者类似框架,确实很适合用来做iPhone Web Apps。

以客户端为中心的AJAX

那么除了RoR,我们还有别的选择吗?我们可以选择使用一些客户端框架来实现类似的效果。这样说吧,类似RoR那样每一个view都是一个模板,但不是rhtml,而是普通的html,没有复杂逻辑,点击连接后不是由RoR引擎调在服务器端用rhtml,而是客户端自己直接拦截了链接点击并用AJAX的方法去请求该html然后更新内容。这样一个框架,可以在Wrox的Professional iPhone and iPod touch Programming : Building Applications for Mobile Safari一书中见到。这本书写着2008年1月出版,但实际上已经出版,并且可以下载源代码。我暂时还没办法买到这本书,但源代码中就包括了这样一个客户端框架。

然而,这种以客户端为中心的做法并没有真正在客户端引入一个MVC,它只是简单地把服务器端的MVC裁减掉了,服务器端只能简单的发送内容或响应提交,因此只适用于比上面的以服务器端为中心的模型更简单的情景。如果你正在编写的应用不涉及大量的提交操作,或者根本就是Web1.0网站,我的意思是,单向传递信息不接受任何用户提交的网站,那么这种轻量级的模型就非常适用了。

小结

在这次的文章里,我们介绍了三种常见的iPhone Web Apps交互方案,没有哪一个是绝对更好或者更坏的,按照你当前开发的应用做出选择吧。将来我们写文章深入探讨其中的一些实现细节,或者是交互模式,但前提是我先完成了几个iPhone Web Apps。欢迎订阅本系列文章:

Feedback

#1楼   回复  引用  查看    

2007-12-29 17:50 by 问天      
google app的iPhone版确实没有使用XMLHttpRequest,可是它使用了iFrame切换各种App……iFrame亦是ajax技术中的一种……

偶这段时间工作也是在开发一个iPhone web app……依赖jQuery使用了大量大量的ajax……在iPhone safari上表现得粉好……

MobileSafari如此强悍,不用ajax很可惜的……

#2楼[楼主]   回复  引用  查看    

2007-12-29 18:50 by Cat Chen      
@问天
Exactly! Mobile Safari is an amazing browser!

#3楼   回复  引用  查看    

2007-12-29 19:14 by 怪怪      
"GMail也没有"并不是借口, Google没有的东西多了. 除了偶尔一两次率先采用(还仅仅是在大公司之间比较), 实际上Google是在公开技术(实际上在非公开技术上, 不算收购的话, Google也就只剩搜索引擎相关的了)相关领域中比较差的一家公司..

我也觉得, 既然iPhone鼓励这个, 就应该玩的更炫一点, 要考虑iPhone的用户都是些什么人. 虽然我不做iPhone开发.

#4楼[楼主]   回复  引用  查看    

2007-12-30 21:59 by Cat Chen      
@怪怪
没太大意义的,Apple官方的iPhone人际交互指引说明了,设计iPhone Web App时你要预期用户是在忙里偷闲时用一下子,并且身边还有更多比iPhone让他分心的事情在发生。例如在超市里买东西,用户用眼角扫一下屏幕上的shopping list就够了,真正值得关注的是商品上的价格标签和复杂的打折计算方法,因此iPhone Web App没必要做太多的特效,能够给出足够的反馈信息就够。

#5楼   回复  引用  查看    

2007-12-31 02:40 by 怪怪      
这个倒也是..., 一切还应该从应用出发



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1019883





相关文章:

相关链接: