多年以前,Jesse James Garrett发表了一篇论文,其中描述了一种高级的Web开发技术,虽然这种技术的各个组成部分都已经存在了多年,但是只有少数的开发者偶然地注意到它们。我想最主要的原因是,对于产生可度量结果的需求阻碍了对提高编程技巧(这种技巧被我以前的老板称为“疯狂科学家的行当”,在我的回忆中,他用了一个别的什么词来代替“行当”)的追求。不幸的是,在绝大多数的场合里,这种障碍都存在着。
但是,抓住最后的机会是很重要的。这篇论文不仅描述了这种技术,而且提到Google就使用了同样的技术。Google的大名足以改变人们的看法,转眼间“疯狂科学家的行当”立刻变成了“为什么我们没有这样做”。导致这种改变的原因是Google的成就使得人们相信应用这种技术也可以获得可度量的结果。在Google的影响下,应用XMLHttpRequest对象来进行无需不断卸载和重载网页的浏览器-服务器间通信也成为了现实。
本章将介绍使用服务器端信息更新网页的实现方法。除了XMLHttpRequest对象这个已经存在了多年的解决方案之外,这里并不是没有其他神秘的东西,重要的是我们如何将这些单独的片段组合起来。当应用一种方法去组合它们的时候,那就是一堆组件而已,而当你采用另一种组合时,怪物就从这里复活了。
2.1 Ajax这不是模型
几年前,我曾经演示过一个刚刚阐述过的应用程序。这个演示持续了两个小时以上,伴随着不断重复的相同问题。
“这是个模型,对吗?”
“不,这是一个真正的应用程序。”
“不可能吧,屏幕都没有闪烁。”
“这是因为我们使用XML、HTTP和SOAP直接从服务器获取数据,然后用JavaScript更新网页当中变化的那部分。”
“这是模型,对吗?”
在这个演示中,我的客户花了超过2个小时才认识到数据库确实更新了,在页面没有按他想象的那样“闪屏”的情况下被更新了。







