按耐不住的我和AJAX

有个成语叫做“才华洋溢”,是用来描述聪明的人的。我不是聪明的人,想了很久也没有想到一个成语来描述自己。在Tim Horton‘s里面坐了一下午,又在办公室坐到现在。人是好好坐着,但是心却像窗外的雪花一样,满天飞舞。最后,终于按耐不住要写下几个臭字,以泄我书写之欲。

一切都要从AJAX说起。这东西最近挺火的,很多搞网站的都在研究这个东西。我对搞网站的从来都很鄙夷,不过AJAX让我鄙夷了自己一把。从90年代中期一直到前些日子,我们的互联网被每时每刻地丰富着各种各样的功能,从最早的CGI,一直到红了好几年的ASPPHP。其实这些技术,都是基于无态HTTP的。尽管它们提供了相当大的互交性,但还是建立在HTTP的POST/GET模型之上。当然,我们也有Java和Flash,但是这两个只能算是嵌入在页面的外部应用程序,是和浏览器无关的。无态HTTP,一个很大的缺点,就是每次交替信息的时候需要传输大量的冗余内容,比如一个页头、页尾,甚至任何不用变化的内容——如果假设缓存机制处于最差情况(Worst Case)——都要至少重新传输一次,从而造成一定的时间拖延。我们之所以没有怨言,是因为我们已经习惯了。就好像当世界还没有互联网的时候,今天的网虫们当年不还是乐此不疲地生活么?

AJAX,改变了这个状况。根据Wikipedia上面的定义,AJAX包括:

* 基于web标准(standards-based presentation)XHTML+CSS的表示;
* 使用 DOM(Document Object Model)进行动态显示及交互;
* 使用 XML 和 XSLT 进行数据交换及相关操作;
* 使用 XMLHttpRequest 进行异步数据查询、检索;
* 使用 JavaScript 将所有的东西绑定在一起。

通过上面这些技术AJAX能让无态的HTTP对话成为好像桌面程序那样的有态对话。我比较笨,不是很喜欢术语太多的定义,所以一般都是靠例子来理解新生事物的。这个例子很著名,应该很多人都接触过,就是Google Map。每一次进入Google Map,我们可以注意到在移动地图的时候,整个页面是没有重新刷新的。通过内部的JavaScript,图像数据可以迅速并完整地传输。假如用老的办法来实现这样的地图的话,页面上至少需要几个方向按钮和放大缩小按钮;而每次移动或者变换地图的时候,重新刷新页面的时间就相对来说很长。具体如何实现的,其实看一个实际简单的代码教程会很有帮助。除了传统的基于XMLHttpRequest的AJAX之外,还有一种不用 XMLHttpRequest 的AJAX方法可以参考一下。

Google确实是个很善于给人惊喜的公司,除了它的地图查询,在其它服务,比如GmailGoogle SuggestGoogle Reader当中,都广泛应用了AJAX技术。看起来好像很深奥,其实根据王建硕的话来讲,只不过是“老酒有了新瓶子”。确实是这样,绝大多数网站都可以在不用添加任何软件的前提下享受到AJAX带来的快感,包括His Story。在His Story主页面的右侧栏里找到Shoutbox,随便打个“你好,王小虎”之类的话,就可以看到效果了。是不是非常网络小资

可惜的是,目前祖国大地上的这样的网络小资、大资数量还是很少的。很多大牌的门户站点,都还没有认识到集成AJAX到自己的页面里去其实是一件非常容易的事情。哪怕只有那么一丁点AJAX的影子,估计都能吸引众多眼球。其实中国业内的人士可以说是已经迫在眉睫了,除了上面综述过Google的那些基于AJAX的产品,微软马上也要推出它的Live系列服务,其中包含了大部分以前的桌面应用,只不过是摆在了浏览器里面。还有Yahoo!旗下的新秀Flickr,都是非常有竞争力的服务。

有这些巨人站在路中间,我们还可以做什么?这个问题很幼稚。MSN China做的再好,看新闻也是去大大小小的本地新闻站点;Google论坛做的再全,灌水发帖还是去星星点点的雷傲、动网论坛。他们插足中国市场至少也有段时日了,除了Google的那个搜索主页面和MSN那个Space,绝大部分服务页面且不说大多数老百姓,至少我周围的朋友和亲人都是没用过,甚至没听说过的。只要一说联众、QQ、网易、新浪这些名字,我保证我的父亲母亲至少一天内访问过其中一个站点多次。这样的巨人,在中国,可以说是失败的。他们聪明地看到了中国的市场,却没有看到中国的门路,直接把西方站点的CSS拷贝一通,然后收买几个本地小网站,汉化一下主页面……是统统不能给满分的。

那么我们可以用AJAX来做些什么呢?提示在上面,答案在下面:

博客

登陆页面:实时更新最新的博客文章和评论、实时按秒计算的排行榜、动态博客地图不用切换页面的登陆途径……

书写页面:丰富文本模式的所见即所得、HTML模式的实时预览、实时显示刚刚发布的同类别文章的列表、地理位置附近有谁正在书写……

管理页面:不用刷新页面的删除和修改、实时显示按秒计算的点击率和引用站点、动态显示留言……

论坛

主坛版面:动态更新帖子标题、实时财产排行榜、实时公告、站内好友间即时通信……

子坛版面:动态更新每个帖子的点击率、实时显示正在访问当前版面的用户(“某人来此地不屑一顾地瞄了一眼,随即飘然而去”、“某人驻足此地已有时日,丫到底在想啥?”)

发帖页面:(同博客中的书写页面)

这些都是脑子里能立刻想到的,当然不是全部的。其他还可以扩展的服务,比如相册、拍卖,甚至网上做各种应用,包括可以直接在博客或者论坛发文章的独立丰富文本书写器……太多太多了。其实这些想法之前也可以做,只不过反复的刷新页面和冗长的延迟让这些想法变得不切实际。大胆地想象这一切有中国特色的构思吧,那样的一个Web 2.0时代将会给人们带来多少惊奇?终于想到用什么成语来描述自己了,那就是“欲火焚身”。年青人,总有顶着个硬邦邦的脑袋瓜子去闯事业的欲望——AJAX让我的这种欲望上升到了一个新的高度。

如果有人说我应该去演《大腕》里面的某个楼长,我会很开心的:说明一切还不算太晚。

发表评论

电子邮件地址不会被公开。 必填项已用*标注