?/p>
世界上最权威的关于ajax的系l介l?/p>
译者:本文是世界上W一关于ajaxpȝ?a target="_blank">介绍。作者通过q篇文章创造了"ajax"(阿迦克斯)q个词?/p>
在现在的互动性设计中如果有一U能够被UCؓ"qh?Q那一定是web 应用软g。除此之外,我们最后一ơ听到有Zؓ某个(不处?a target="_blank">Web之上?交互式设计而們ր是在什么时候?(okQ除了ipod)所有够P富有创意的新设计都是在线的?/p>
管如此Q?a target="_blank">Web交互设计者仍不能不对开发桌面Y件的同僚们感C丝妒忌。桌面应用Y件有着丰富而及时的响应Q相对于此,在Web之上E序g遥不可及。同L情况也隐含在web快速增长的应用之中Q它在我们能够实现的用户体验以及用户已经从桌面应用程序中获得的体验之间生了隔阂?/p>
目前q种隔阂正在被打破。看?a target="_blank">google(Google Suggest)。当你敲上一个新词时Q徏议的词汇几乎是立卛_现的。再看看Google MapsQ用你的鼠标抓取地囑ƈE稍UdQ再UdQ一切都会立卛_玎ͼ而不需{待面h?/p>
Google Suggest和Google Maps是这U新实现途径?个例子,在Adaptive Path我们UC为Ajax。这个名字是异步JavaScript+XML的羃写。它代表了一U在web之上可能实现的基本方式?/p>
Ajaxq不是一Ҏ术。它实质上是用一U强大的新方式结合在一L一pd技术集Q其中的每一Ҏ术都在他们自q领域里面相当行。Ajax包括Q?/p>
·使用XHTML和CSS创造基于标准的呈现;
·使用文档对象模型(DOM)的动态响应与交互;
·使用XML和XSLTq行数据数据交互和处?
·使用XMLHttPRequestq行异步的数据检?
·使用javascriptl定一?
l典? web应用模型是这么工作的Q在界面上的大多数用h作都能触发一个http的请求传回web服务器。服务器q行一些处理-Q检索数据,处理数据Q与其他 的早期系l进行交互-Q然后传回一个http面q回客户端。这个模型是ҎWeb最初的文本链接方式编写的。但是作为《The Elements of User Experience》的fans,我们知道Q让web与超文本高效融合的实现方式与~写好的软g应用q无直接联系?/p>
囄1Q传l的web应用模型(?与Ajax模型的对??
q个实现方式很有技术上的感觉,但它无助于创造更好的用户体验。当服务器在做这些事情的时候,用户在干什么?没错Q是{待。而在q项d里面的每一 步,用户都要{待若干旉。显Ӟ如果我们要从头设计一个符合要求的web应用Q我们不能让用户q么一直呆呆地{着。页面装载完成后Qؓ什么一旦应用程? 需要从服务器上获取数据Ӟ都要让用户中断他们的交互Q事实上Qؓ什么要让用L到这?应用E序与服务器?交互q程Q?/p>
一个Ajax应用E序通过在用户与服务器之间引q一U称为Ajax引擎的中间媒介,能够从根本上消除q种开始-{待Q开始-{待的web交互q程。这听v来象是往E序里面d一个抽象层(layer)而让它更地作出响应。但事实q不如此?/p>
在开始一个会?session)Ӟ览器加载Ajax引擎——用javascript~写q常位于一个隐藏的frame中-Q以取代加蝲 web面。这个引擎同时负责ؓ用户看到的界面进行描qC及响应用Lhq与服务器进行交互。Ajax允许用户与服务器q行异步的交互-Q独立于服务? 的通讯。因此用户就不必一直呆呆地盯着一个空白的览器窗口和沙漏图标Q等着服务器做后面的事?/p>
囄2:传统web应用的同步交互模?上面)与Ajax应用的异步交互模?下面)
用户的每个动作通常都会产生的http的请求被javascript传向Ajax引擎的调用取代了。Q何关于用户动作的响应q不都需要传回服务器 ——比如简单的数据验证Q在内存中修Ҏ据,甚至包括一些导航——引擎能够自己处理这些。如果引擎需要一些要从服务器获得响应的东襎쀔—比如提交数据进? 处理Q加载额外的界面代码Q或索新的数据,引擎能够让这些请求异步地发送,q通常使用XMLQ且无需用户停止它们与应用程序的交互?/p>
Google在完善Ajax上投入巨大。所有Googled发布的主要品——orkutQGmailQ最新beta版的Google GroupsQGoogle SuggestsQGoogle Maps——都是Ajax的应用?惌得更多有关Ajax实现的具体细节,可以参考这些关于Google GroupsQGoogle Suggests和Google Maps?a target="_blank">l典分析)其他的还包括以下q些Q在Flickr上许多h们喜Ƣ的Ҏ是通过Ajax实现的,Amazon的A9.com搜烦引擎也用了同样的技术?/p>
q些目表明Ajaxq不只是一U技术层面的Q同时也是现实中h实践意义的应用。这q不是某U只存在于实验室的技术。Ajax应用可以是Q何Ş式,从非常简单的Q单函数的Google Suggest到非常复杂尖端的Google Maps?/p>
在Adaptive PathQ过ȝ几周里我们一直在使用AjaxQ同时我们意识到我们对Ajax所能实现的丰富的交互能力以及响应只是浅辄止。对于web应用? aQAjax是一U重要的q展Q同时它的重要性刚刚显C出来。已l有很多的开发h员知道如何用这些技术,我们期望能有更多的团体在实现更有竞争力的 Ajax应用上紧跟Google的脚步?/p>
Ajax应用上最大的挑战q不是来自于技术。Ajax的核心技术已l是成熟Q稳定,且易于理解的。相对的是,真正的挑战在于这些应用程序的设计者们Q如何忘记我们所x知的一切有关web的局限,q同时开始想象更大更宽广的可能?/p>
q将会很有趣?img title="眨眼" alt="眨眼" src="http://www.yeeyan.com/tinymce3/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif" border="0" />
自从我们发表了Jesse的论文后Q我们收到大量读者咨询Ajax问题的信件。在以下的Q&A部分QJesse回答了一些最常见的问题?/p>
Q. 是Adaptive Path发明了Ajax吗?q是GoogleQ亦或是Adaptive Path帮助google实现了这些Ajax应用Q?/p>
A. Adaptive Path与Google都没有创造Ajax。Google最新的产品只不q是Ajax技术的一些儿鲜明的用例子。Adaptive Pathq不只是参与了Google关于Ajax引擎的应用。我们还Z些其他的客户开发Ajax作品?/p>
Q. Adaptive Path在贩卖Ajaxlg或注册了Ajaxq个名字吗?我从哪里可以下蝲它?
A. Ajaxq不是某U你能够下蝲到的东西。它实际上是一U途径——一U你用来思考如何用特定技术徏立web框架的方式。Adaptive Pathq不拥有Ajax名字和技术的所有权?
Q. Ajax是XMLHttpRequest的别名吗Q?/p>
A. 不是的。XMLHttpRequest仅仅只是Ajaxq个技术集合中的一部分。XMLHttpRequestq个技术组件让异步的服务器通讯UCؓ可能? Ajaxq个名字的由来在我们的文章里已经有详l的描述Q它q不只依赖于XMLHttpRequestQ还有CSS, DOM{等其他的技术?/p>
Q. Z么你觉得有必要取q么一个名字?
A. 当我与客戯个实现方法的时候,我需要某个比"异步的JavaScript+CSS+DOM+XMLHttpRequest"更简短的名字?/p>
Q. 异步服务器通讯技术已l存在很多年了。ؓ什么说Ajax是一U?新的"实现方式Q?/p>
A. Ajax是一U在现实中能够改变基本web交互模型的新的且显著的技术用方式。Ajax之所以这么迷人是
因ؓq些公司明白如何最高效C用它们从容地q行开发?/p>
Q. Ajax是一U技术^台还是一U架构风|
A. 两方面都是。Ajax是以某种Ҏ方式使用的技术合集?/p>
Q. 最适合Ajax的是哪种应用Q?/p>
A. 我们也还不清楚。这是一U互相关联的新的实现途径。我们对什么是Ajax最佛_用的理解仍处于初U阶Dc有时传l的web应用模型仍是某些问题的最佌x案?/p>
Q. q意味着Adaptive Path是flash的反对者吗Q?/p>
A. 没有的事。Macromedia也是我们的一个客戗而且我们长久以来一直支持flash技术。当Ajax技术成熟之后,我们希望它有时在某些问题上是一 个更好的解决ҎQ有时flash则会是更的那个。我们同样对L融合两种技术的途径很感兴趣?Flickr而言Q他们就同时使用了这两种技?
Q.Ajax有明昄可访问性或览器兼Ҏ的局限吗QAjax应用会破坏后退按钮的功能吗QAjax能够与重|功?REST)兼容吗?对于Ajax的发展有没有需要进行安全性的考量Q对讨厌javascript的用P有没有用Ajax的可能?
A.所有对q些问题的回{都?有可?。许多的开发者已l在L定位q些问题的方式了。但我们认ؓQ要定Ajax的所有局限,仍有很多工作要做。同时我们期待Ajax的开发社够发现更多的q类问题?/p>
Q.你引用的一些Google的例子完全没有用XML。在一个Ajax应用里面Q我都必M用XML或XSLT吗?
A.XML是Ajax客户端获取及发送数据的一个相当成熟的方式。但没有M理由限制你不能用一些象javascript object notation之类l构化数据交互技术来实现相同的功能?/p>
Q. Ajax应用会比传统的web应用E序更容易开发吗Q?/p>
A. q不一定。Ajax应用不可避免地需要在客户端运行复杂的javascript代码。让q些复杂的代码高效且无错误地q行q不是一件容易的事。我们同样需要一些更好的开发工h架构来迎接这些挑战?/p>
Q. Ajax应用E序一定会比传l的web应用E序h更好的用户体验吗Q?/p>
A. q不一定。Ajax赋予了交互设计者们更多的灵zL。然而,我们拥有强大的能力Q在q用中我们就会有更多的细节需要关心。在我们的应用程序中我们一定要更加谨慎C用Ajax来增强用户体验,而不是削弱它?/p>
转自Q?nbsp; http://hi.baidu.com/jantouy/blog/item/c7aed9fa5cdedad9b58f312b.html