让我们看看有关Ajax的几个误区,拨开迷雾、发掘真相。
误区一:AJAX是AsynchronousJavaScriptandXML的缩写。你写这个词时,应该用大写字母拼写,要不就显得很无知。
事实上,根据Ajax这个词的创造者JesseJames的介绍,Ajax可不仅仅是个缩写词。它是一系列技术用特定方式结合在一起的整体。它包括JavaScript,CSS,DOM和运用XMLHttpRequest对象进行客户端与服务器间的数据传输。从服务器传到客户端的数据格式不一定是XML,还可以是JSON(Javascript中的对象)或其他数据格式。总之数据的传输是少量、递增的(译者:而不是传统的刷新整个页面)。所以,你要是想显摆一下自己是很懂的技术高手,用Ajax,而不是AJAX。您自己判断是不是想显摆自己吧。
误区二:看看Gmail和GoogleMap吧,Ajax会让你的网站可用性更强。
事实上,使用Ajax有可能让你的网站可用性增强,但也可能使你的网站变得让人可憎得难用。全新设计的Yahoo电视节目列表就是这样一个反面教材。(译者:对新版Yahoo电视节目列表的反面评价主要认为Ajax的翻页功能让原来一页上列出所有电视节目的可用性变得更差,比如不能在一页中进行查找等,虽然翻页功能本身做得很漂亮。)
误区三:Ajax只是面子工程--仅仅是表面上看着挺酷和视觉效果。
事实上,如果有正确的设计和实施,Ajax的网络应用应该比传统的CGI类型的,以服务器端处理为主体的(如ASP.NET或JavaServerPages,JSP)网络应用具有更好的可扩展性,和让用户体验到更快的反应速度。如需要了解技术细节,请参见IBM的BillHiggins写的有关Ajax和REST的第一部分。这是我的总结:传统的CGI类型的,以服务器端处理为主体的网络应用,客户端不保存(网络应用执行的)状态(Stateless),状态的保存完全由服务器实施(Statefulserver)。这使得服务器产生的结果(译者:比如动态从数据库读取的数据)只能一次性使用而不能被缓存(cache)下来再利用。这破坏了REST构架中的可扩展性原则。而Ajax能将状态保存在客户端,从而实现常用资源,如重复使用的数据和源程序(译者:应该是指Javascript),可以有效被缓存和再利用。
误区四:Ajax对于一般网络开发人员很难掌握
Ajax确实不容易。但它的使用难度正在逐步降低。有若干因素造成Ajax的实施难度:对不同浏览器兼容性的支持,开发工具的不足,以及对开发人员思维方式转变的要求--从过去以服务器端处理为主体的网络应用,转变到新的在客户端保存状态、逐步上传数据的应用。但由于Ajax越来越普及,很多开发工具和平台提供商以及开源软件开发者都在着力解决这一问题。这里列出若干对Ajax开发员有用的工具:Google网络开发工具箱(给Java开发员的),dojo跨浏览器平台,script.aculo.us长于提供视觉效果,以及用来调试JavaScript程序、监视XMLHttpRequest的(FireFox插件)Firebug,等等。
误区五:Ajax会破坏用户使用浏览器的体验(Ajaxbreaksthebrowsermodel)
确实,Ajax的应用有可能造成浏览器使用的问题,如破坏“返回键”功能,让用户不知所以,让有残障的用户完全无法使用网站。但传统技术也可能产生类似问题:如使用框架(frames)或者Flash往往也会破坏“返回键”功能;即便不用Ajax,糟糕的设计也能让一个网站把用户完全搞晕;即便使用最单纯的HTML也很难做到让有残障的用户顺利使用网站。这些是需要有意识地去注意和学习的方面,并不是仅存在于Ajax应用中的问题。
误区六:Ajax是web2.0的关键组成部分
这要看你如何定义web2.0了。我认为web2.0和web1.0的区别主要在于社会层面而不是技术层面。从web1.0到web2.0最重要的范式转变(paradigmshift)在于web2.0是双向的网络,可读写的网络和社会网络。而不是“让我们开家网上商店”的那个网络。按照这个定义,我们可以完全不用Ajax来实施web2.0。大多数博客不用Ajax;没有Ajax,维基百科照样能焕发它的异彩;社会化网络也不需要Ajax;Flickr之所以吸引人是因为它是一个照片的社会化平台,而不是它使用的DHTML技术。
更多Ajax的相关资料(译者:建议深度阅读、推荐和翻译)
我个人最喜欢的有关Ajax的博客是Ajaxian和ShelleyPower的“技术女狂人”。Shelley写的《添加Ajax》很快将会由O'Reilly出版。而本文的写作参考了BillHiggins的关于Ajax和REST构架的文章(第一部分,第二部分。)
声明:IBM是我的客户。
译者:压题图片是原作者的照片。另外,原文上有原作者详细的联系方式。