Lightoy's Sky

-=Laugh,and the world laughs with you;weep,and you weep alone.=-
 
 

[摘录]Ajax优缺点评论

   Internet2006-6-7 13:55
今天在网上看到一篇关于Ajax技术优缺点评论,受益颇多,部分摘录如下:原文网址:http://www.chinait.com.cn/blogs/chinait/archive/2006/04/17/616.aspx

AJAX的七宗罪

引子  2005.2.18,Jesse James Garrett 的一篇A New Approach to Web Applications引出了AJAX这个web界的新名词。加上新宠儿在降生下来就和足球名队阿贾克斯、Google Suggest Google Maps这些大腕息息相关,不想出名都难啊。但似乎人们给与AJAX的期望有点太高了,甚至有人提出了用AJAX取代Java Applet和Flash。不知Flickr是不是也听到这种呼声才把自己的Flash UI转向了普通的Javascript。AJAX是个伟大的东西,它是在不创造新技术的前提下诞生的一个标准,凭这一点就能招来大批的狂热追随者,AJAX看起来更像是杨过和小龙女练得玉女素心剑一样,分开来没有什么破坏力,但是二者合一就威力无比。  罪之一:对搜索引擎的支持不好  这其实更像一个大大的讽刺,AJAX的鼻祖是Google,但却对Google自己支持最不好了,GMail主界面除过Top和Bottom外没有一个链接就是最形象的讽刺了。虽然Mail本身是个私人的应用系统,但这个无链接的设计界面恰恰给AJAX开了个坏头。Flash也有同样有这个毛病。没有链接的web就像森林中迷路的羔羊,这句看似广告语,其实是web设计的根本原则。  罪之二:编写复杂、容易出错  javascript本是是个轻量级的小东西,现在被强迫重用起来,负担可想而知。javascript对OOP的支持很少,这就限制了javascript代码的可重用可封装等等,从Google Mpa还是其他一些应用中能看到的都是无数的〈script src=""〉〈/script〉 这样的文件包含,这些除了让程序员头昏的更快点,一点好处都没有。更可怕的是在javascript中竟然没有一款顺手的Debug软件,很多写js的老手到今天还是用最原始的alert("")来调试,splinetech JavaScript HTML Debugger 算是一个看起来还像个样子的调试器吧,可惜不是免费的,几十大刀让我这种穷人只能望而生叹了。  罪之三:冗余代码更多了  和上面说的差不多,层层包含js文件是AJAX的通病,再加上以往的很多服务端代码现在放到了客户端,所以每次打开一个页面会包含很多的无用的js文件也一同下载下来。虽然宽带越来越普及,但是减少代码冗余还是每个web设计者的必修课。  罪之四:破坏了Web的原有标准  什么叫破坏web标准?〈span onclick="location.href='detail/';"〉点击查看全部〈/a〉,这就是破坏了web标准。好好的A标签放着不用,偏要用span。这种例子很多,flickr中的标题单击后可以更改,这虽然(也包括我)是大家一致叫好觉得方便的设计,但同时这也是歧义了web元素本身的含义,物是人非这个词不知道用的合不合适?  罪之五:缺少一个没有标准之争、没有back和history的浏览器  哈哈,这句话语有点讽刺意义。现在的浏览器市场,不管是IE还是FireFox还是Opera等等。浏览器和浏览器之间的差异一直都是web设计者心中永远的痛,支持的css不一样,支持的客户端脚本不一样,有的竟然连客户端脚本的用法都有不同。这让程序员非常苦恼,最明显的就是调用xmlhttprequest了,req=(window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");这段创建xmlhttp对象的代码就是为了适应IE和非IE两天阵营的浏览器的经典例子。说是没有back和没有history的浏览器,这也是一个讽刺,主要是指在AJAX下点击链接是不Redirect页面,所以不存在后退和前进了,同样,没有后退和前进也就无存找浏览历史纪录了。back和history存在的根本就是url的改变,在AJAX下人们发现不改url也同样能达到内容改变这个酷酷的特点,何乐而不为呢?look http://www.dux2005.org/和http://www.zagodesign.com/,我承认这两个站确实做得非常棒,但除了酷酷的感觉外,毫无用处。  罪之六:XML只是用来打幌子  xml从诞生那天起就被一致看好,大有非xml不娶之势,我想Jesse James Garrett也是为了趋于流行才把xml强行加入ajax的吧。xml有一个致命的缺点,那就是加载的资源耗费,这好像是所有平台下xml的通病。google map虽然是Jesse James Garrett推荐的AJAX的品牌代言人,但是gmap并没有用xml,而是用了原生的javascript数组,我自己在用AJAX从服务端传回数据时也从来不用XML,因为它让我更繁琐让系统更慢。服务端首先要调用xml对要传输的数据进行封装,客户端得到数据后再调用xml进行解析,简直是画蛇添足。AJAX的一个重要特点是要身法轻盈,数据的传输尽量单一和简陋,如果确实需要传输大量复杂的数据,也应该通过多次调用传回。  罪之七:世界这么大却找不到自己的家  AJAX适用于什么?能干什么?能带来什么?在网站上用AJAX那是笑话,除非像Google Map和Flickr这样的专业领域的网站外,普通网站根本没必要用这个技术;在庞大的企业应用市场估计还能有AJAX的一点容身之地,不过在MS、SUN不会看着AJAX这个野孩子来在他们的地盘上撒泼的,如果大家都用AJAX,那java给谁卖?.net给谁卖?所以AJAX在企业应用也不是长久之地。所以,AJAX现在找不到自己合适的位置是个很大的尴尬。疑病乱投医,最近把AJAX的矛头指向Flash和Applet就是一个例子。  当然,我也不是要把AJAX扁的一无是处,我本人就非常喜欢这门技术,它能让web设计者的眼球更加宽广,让一些大胆的设计成为现实,但是我也会很冷静的小心翼翼的利用这个利器,利器虽好,一不留神刺伤的是自己。  PS:这篇文章是昨晚写的,今早却神奇般的从网上看见了一篇文章Ajax: 99% Bad,文章是针对2000年那片著名的Flash: 99% Bad 写的,其中的观点和我所说的七宗罪中的几宗相似。                            --来源:嘟嘟老窝 duduwolf Ajax的优点评论    从听说AJAX开始,我就一直搞不这东西是什么东西,好好的一个XMLHTTP要再裹上AJAX,不明白有什么意义。我想会不会AJAX不是一个实际东西(没有实际的成果),只是一种设计观念。我自己也用XMLHTTP写过很多东西。以XMLHTTP来看,对别人提出的那些罪宗觉得是他们在无理取闹。  冤之一:对搜索引擎的支持不好  这个好像跟搜索引擎扯不上关系吧。还有谁说WEB设计就一定要有超连接在里面啊。可能告诉我哪里有制定这样的标准啊?  冤之二:编写复杂、容易出错  javascript只是没有直接创建类的方法,javascript是一个完全的面向对象的东西,每种类型的值,甚至函数都可以看做是对象。javascript虽然没有直接创建类的方法,但同样可以用其它方法创建出类,如用function创建的函数可以当做类来new一个对象出来。至于debug工具不是没有而是比较少,MS的Visual InterDev,Mozilla中的DOM察看器和Javascript Debugger扩展都可以用来调试的。同样也可以用javascript写一些简单的调试程序。  冤之三:冗余代码更多了  会有很多JS代码我承认,但是如果减少了JS代码,就不会增加HTML代码吗?增多的HTML代码分部到不同的页面的每打开也要占用网络。然而大多的HTML都是通过服务器上的脚本产生的,这不是加大了服务器的负担了。把数据的处理放到客户端用JS处理可以分担服务的很多任务。  冤之四:破坏了Web的原有标准  我绝对是一个W3C的支持者,但我不明白用而不用跟标准有什么冲突的。我记得以前我有看到一个W3C的页面里面,也有这么写的。  冤之五:缺少一个没有标准之争、没有back和history的浏览器    没有back但还是有这个页面的history。可是没有back不觉得对会更好吗,做为用Web开发系统的开发人员来说,常见的一个问题,就是因为back了,引起重复提交。的确有不同浏览器中创建XMLHTTP对象的方法不一样,但使用上是差不多的。开发者可以把这些封装到一个类里面,使用上就从这个类里面创建的一样的。还有这样跟那两个网站有没有什么关系吧,他们爱怎么开发就怎么开发,总不能因为就那两个网站而打死一大片吧。  冤之六:XML只是用来打幌子  这个我是为XML鸣冤的,Jesse James Garrett是不是趋于流行我不知道。但我认为XML的创建就是为了数据格式更明了,开发者之间更容易沟通。所以XML文件是有可能会比较大,难道HTML就不会了吗?本是同根生嘛!(据说下一个版本的XML会加强数据的压缩)在客户端要对XML进行解释,那是肯定的,我觉得这样者使XML的使用上更灵活。你用数组或字符串就不用要对要传送的数据封装成数组或字符串了吗?客户端的脚本解释器就不用解释了吗? --来源:chon81
标签集:TAGS:
回复Comments()点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}
Name:Lightoy
Location:WuHan,
China


View my complete profile

NewLog

HighLight

NewComment

Link_Friends

 很高兴和大家友情链接!

 

Link_Technology

 GotoAndLearn.com
 Coding In Paradise

Link_Resource

 CCII国际设计中心
 Sagmeister(施德明) ★
 Niklaus Troxler(尼古拉斯)
 86VR | 虚拟无忌
 视觉中国
 设计中国
 动网论坛
 5D多媒体
 工业设计博客

Link_blog

 Jibbering
 aw's blog - 活着而已
 胖狗狗的窝
 老蒋的BLOG
 EASTECHO-wind of change
 bbqi的Flash陷阱
 子叶_leaves
 Yellow
 希儿的潘多拉盒子
 DEMO
 Company
 Edit Me

Counter