代码改变世界

AJAX 在中文社区的“集体信仰动摇”?!

2006-12-03 16:37  Cat Chen  阅读(4246)  评论(13编辑  收藏

最近好像在中文社区又多了关于AJAX的讨论,很多都是说AJAX仅仅是过渡技术,又或者说AJAX现在有些滥用了,反正就好像一场狂热下来大家又成了怀疑论者了。

Microsoft Expression

看起来最震撼的事情应该是Microsoft Expression系列被越来越多人知道,很多人都在想WPF在如此强大的设计器支持下能否干掉AJAX。首先说一下Microsoft Expression是什么,这是一个和以前的Macromedia Studio非常类似的工具集,其战略目标应该也非常类似。

以前Studio的成功在于3大产品为设计人员组成流水线,Fireworks设计的图可以直接切片放入DreamWeaver使用,又会者提供给Flash作为素材,而Flash设计完后同样可以直接插入DreamWeaver设计的网页中。现在的Expression则分为Graphic Designer、Web Designer、Interactive Designer这3大产品,Graphic Designer设计的图可以直接提供给Web Designer或Interactive Designer使用,Web Designer用于设计符合Web Standards的页面,而Interactive Designer用于WPF的交互界面,这两者的设计结果最终都放入Visual Studio中添加后台代码。

暂时看来,Web Designer和Interactive Designer是平行产品,也就是Web和WPF并不存在哪个更优的说法。Web Designer已经经过Beta1了,估计正在进入RTM阶段,所以应该会最早发布。Expression的出现对于程序员来说可以说是好事情,因为在工具上就已经给程序员和美工划分了明确的艰险,这样就可以避免程序员和美工互相推卸责任,界面上的互动效果说不清应该由谁来负责。同时Web Designer是用于设计符合Web Standards的页面的,这就要求美工不能仅仅懂绘图和切片而不懂XHTML+CSS。

Web Designer的出现,应该是美工的噩梦而不是程序员的噩梦,因为终于有一个理由要强迫美工去学好Web Standards有关的技术了。以往拖着美工去看Macromedia的首页(现在是Adobe的首页),告诉他们这是符合Web Standards的门户页设计的顶峰之作,他们会不信。跟他们说,这并排的3个竖栏都是用嵌套<ul />方式排的,所有圆角效果、阴影效果都是CSS而不是切片,他们会说用老的方式排出来同样的效果也没什么不好,除了在移动设备上不好看。现在塞一个Web Designer给他们,界面上优先显示的就是CSS设计功能,让他们设计一个Adobe那样的首页来,他们自然会明白技术差距之远。

至于Interactive Designer和WPF对Web的直接威胁,暂时还是不大的,因为WPF/E才刚刚开始CTP,其适用范围还很有限,比AJAX的支持范围要窄多了。现在AJAX在主流的PC浏览器上都已经实现,并且Opera和Nokia也正在实现AJAX在移动设备上的支持。WPF/E的真正对手是Flash,Macromedia鼓吹了那么多年的RIA都没多少人响应,Flex也不好卖,再杀进来一个WPF/E逼到Flex 2要贱卖了。但就算对Flash来说,WPF/E其实只算得上一个未来的对手,因为它现在仍显得过于“贵族化”——只有花得起钱享受XP/Vista/MacOSX级别界面的用户才有资格享受WPF/E,相对来说Flash则已经算是个“草根明星”了。

AJAX滥用

说到滥用,我们必须承认我们确实滥用了,而且问题还很严重。说到底这是因为我们在为技术而技术,很多场合程序员说了算,而国内程序员的界面设计能力还有待提高。

首先错误来自大家对AJAX使用上的本末倒置,我们看到AJAX通过减少刷新来达到改善用户体验的效果,所以我们开始追求无刷新,而最终变成了技术服务于无刷新,而功能服务于技术,这正所谓之本末倒置。而实际上,应该是来自界面上的需求推动了AJAX的发展,只有当界面需要避免刷新时才使用AJAX。

在这方面,我也不是专家,所以只能建议大家多去看看《About Face 2.0》之类的界面设计书籍,先学习如何设计界面,再学习如何在界面上使用AJAX。简单来说,不刷新是为了不打断用户的思维,让用户连贯性的完成一系列的操作,不需要每次都等待白屏过去然后重新滚动到他操作的位置。然而这是提高用户的好体验的一方面,同时我们还需要降低用户的坏体验。最坏的情况是用户在网站上受了挫折(frustrated)而离开,例如导航无法让他去到正确的位置或者让他获取到所需的信息,又例如用户更改输入提交了几次但每次都有新的提示告诉用户不符合某某输入规则。

AJAX给了机会我们更好的避免这些问题,例如通过AutoComplete获得更佳的搜索导航效果,或者异步的Validation尽早通知用户输入所需要符合的规则及如何更改去符合这些规则。然而除此之外还有很多其他更好的设计。在我们忙碌着做一个AJAX式的弹出日历式日期选择控件,国外的Calendar服务则已经提供了更好的输入方式——它们能够直接识别"Tomorrow 7:00pm dinner with Kathy at home"或"2nd anniversary on Oct 5th."这样的纯文本输入,然后自动从中提取出事件的时间、地点、人物、主题等信息。

现在我们将AJAX的底层技术拿出来作学院式研究没什么不好,但如果你要做的是一个面向最终用户的产品,那在设计时就应该先将AJAX放一边,优先考虑的是用户角色以及他们的需求,如果他们的需求包括到AJAX就把AJAX放上日程,否则就不要管AJAX。国外很多网站的AJAX使用都非常恰当,例如BaseCamp,用户需要连续执行的操作(例如添加多个todo或者将多个todo标记为完成)就提供AJAX支持,这样用户的思路不会被打断,但是无上下文的可打断的操作则保留整页提交的方式。

最后,如果你希望继续关注我的文章,欢迎订阅Cat in Chinese订阅Cat in dotNET