论坛首页 Web前端技术论坛

将DHTML与Ajax区分开(zhuan)

浏览 2420 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-07  
JavaEye论坛的Ajax版有几个人具有丰富的DHTML开发经验,我也向他们学到了一些很好的技巧。不过我感觉在那里大多数人的关注点主要还是集中在掌握各种实用的开发框架上。这些开发框架固然很重要,善于使用这些框架有的时候可以取得事半功倍的效果。但是这些开发框架只是Ajax的一部分, Ajax还有更加丰富的内容。这些开发框架解决的问题主要还是属于DHTML开发的问题,我其实一直有意识地将DHTML与Ajax加以区分。DHTML是一门很老的技术,在Goodman所著的Dynamic HTML: The Definitive Reference这本1500页的巨著里几乎描述了在浏览器中使用DHTML所能做的一切事情。国内在高水平的DHTML著作的出版方面一直存在着严重的缺失,所以国内真正的DHTML开发高手凤毛麟角也是毫不奇怪的。Dynamic HTML: The Definitive Reference这本书今年下半年将会由博文视点出版,虽然迟到了很多年,但是可以弥补这个领域长期以来的缺失。Goodman所著的另外一本书JavaScript & DHTML Cookbook(篇幅只有前面一本书的大约1/3),也是非常棒的。我在这里要说的是,不要将DHTML与Ajax等同起来,其实你不知道的关于Ajax的东西还有很多。将DHTML与Ajax等同起来是很多人认为Ajax没有新意(过渡技术云云,貌似只有他本人使用的才是终极武器)的主要原因。对于放言已经知道了Ajax的一切的人,我只能耸耸肩一笑置之。

  Ajax != 会使用Prototype/Scriptaculous/yui-ext/jQuery/Dojo/DWR/GWT/JSI,Ajax其实代表了一种新的Web应用的开发方式。除了学会使用某种顺手的开发框架外,还需要多关注一下Ajax应用的整体架构,以及Ajax应用的客户端与服务器端的关系,它们之间的交互和数据流。Ajax应用支持一些全新的架构设计(例如REST),这些设计在使用基于HTML表单的交互模式的传统的Web应用中是无法做到的。能够代表Ajax本质的一些思想在《Ajax实战》、《Ajax模式与最佳实践》、《Ajax设计模式》这三本书中有着非常深入的介绍。这些属于整体架构的设计模式和最佳实践方面的东西需引起大家的高度关注。一个高度可伸缩的、可用性良好的Web 2.0应用,主要的力量来自于优秀的架构设计。

  Ajax 对于Web开发所带来的冲击可以说与DHTML几乎完全没有关系,DHTML技术在很多年前Goodman的两本书出版时就已经成熟了,但是DHTML并没有给Web开发带来多大的冲击。Ajax所带来的新的思想主要是在架构设计方面的。以前的一些传统的Web应用的架构,包括Web MVC/JSF/ASP.NET等等,它们最初的设计都是围绕着基于HTML表单的交互模式展开的,它们在最初的架构设计中完全没有考虑到 XMLHttpRequest这个技术,更不用提REST了。当然REST也完全不是什么全新的架构,Fielding在他2000年的博士论文中就对 REST的设计思想进行的详细的阐述。但是基于HTML表单的交互模式,是难以做基于REST的架构设计的(一个很大的障碍是表单提交只支持GET和 POST两种方法)。直到Ajax这个技术出现后,基于REST的架构设计才在Web开发领域中获得了它应有的地位。REST这种架构设计除了可以被 Ajax应用之外,也可以被其他的RIA技术所应用。

   发表时间:2007-09-07  
非常同意,Ajax强调的是asynchronous就是异步,就是异步技术,只有异步才能够实现RIA才能够实现无刷,富客户端程序,dwr这种rpc或者说REST和异步才是排挡,DHTML以前之所以没有很多人关系,研究是因为缺乏获取数据能力,最近人们开始认识到他们有异步技术可以开发RIA应用,甚至通过RPC实现非常强大的browser platform上面的应用程序,所以DOM css js以及平台之间的异同才被人们重视起来,还有其实这里面的帖子很少是讲异步的
0 请登录后投票
   发表时间:2007-09-07  
当然异步技术包括xmlhttp iframe script tag,为什么直到google开发出来gmail,以及37signals,以及meebo这样的IM之后,人们才开始重视Ajax呢,也是一个很奇怪的问题,很难说是XMLHttpRequest造就了Ajax
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics