`
yesjavame
  • 浏览: 695256 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

不学习AJAX,我可以做得更好

阅读更多

当AJAX刚推出时,它只有一个简单的概念,任何熟悉xmlhttp和dhtml的程序员只要花30分钟
就可以掌握到专家级水平.

它后来的发展我没有再花时间去研究,我感觉也没有必要花时间去研究.确实,现在的所谓
新技术层出不穷,即使是真正的新技术你也不可能出现一种就掌握一种,世界上还没有这样
的神人.每个人的精力有限,应该把精力放在自己认为最值得关注的地方.

何况这种本就不是新技术,在原有的技术上封装一个新概念而已.我是一个技术人员,不是一
个"概念人员".弄懂最底层的东西才能以不变应万变.

我知道有很多人不同意我的观点.但我想说明我对AJAX这种东西的认识过程.

我是从网民开始转变为程序员的.最初认识网络就是从聊天室开始.大家都记得从95年开始
到2000年左右的一段时间,基于WEB的聊天室是多么红火.但当时基于WEB的聊天室都是那种
以perl为主流(也让我至今还怀念perl)每隔一定秒数就"刷新的主页面,如果颜色设置不当,
刷新能把人眼都刷花了.

请注意,"刷新"这个关键词是AJAX的重要概念.

当很多人都不满意整个页面"刷新"来更新WEB页面的内容时,一些程序员就开始寻找不"刷新"
方案.虽然我当时不是程序员,对程序也一窍不通,但我还是用三个月时间自学了html,perl,
javascript,css.说实话当时这些内容除了perl,其它的内容中元素都不是很多,所以两个月下
来我的javascript已经达到纯熟悉的地步,可以说基本上你能想得到的页面效果我都能做出来.
如何熟悉我下面再说.

当时不刷新的聊天室在国内确实没有几个人能写出来.我在网上(96年左右的互联网资源还很
可怜)穷搜,发现一种server push技术.大家可以在现在的互联网资源上搜索一下看有多少人
了解这个技术.当时ie浏览器还没有真正成为主流,IE3无论是界面还是使用都不如NV4做得好.
所以主流浏览器是NV4.我用perl实现了一个基于server push的不刷新聊天室.

但是很快问题就出来,因为当时的web容器还没有支持线程池的,基于apache的perl写CGI
在每个用户请求下就用一个进程来完成用户请求的逻辑,而server push的关键在于一个文档
类型和循环输出(特定的文档类型可以将后收到的内容在WEB页面上不刷新地替换原来的内容),
如果每个进程都不断在循环,那么每个客户端请求就会占用一个进程来维持不间断的循环.这样
的系统性能之低可想而知,同时,IE浏览器也不支持这种文档类型.

所以寻找更好的方案来解决聊天室主信息页面不刷新的效果在97年左右是一个非常难的技术.
(放在今天我一分钟就解决了).

最后大家发现可以利用javascript的document.write(msg)来向某一窗口动态地写入内容而不
需要刷新那个页面.所以利用一个隐藏帧来刷新获取新内容,然后用javascript来写到主窗口而
形成主窗口不刷新更新内容.终于实现了同样性能的不刷新聊天室.

当时以IE浏览器以IE3和IE4为主,而且IE也还没有真正的成为主流,更没有出现XMLHTTP组件.
所以"隐藏帧来刷新获取新内容,然后用javascript来写到主窗口而形成主窗口不刷新更新内容"
这个思路正是AJAX的核心.


在我的工作与程序没有1/10000的关系时,我已经非常熟悉perl,html,css,javascript.这也正
是后来我从一个policeman辞职后能立即被一家互联网公司招聘的原因,当时国内第一大网络杂志
公司soim招聘我的职位是美工,虽然我的美术功底并不行,但我对html,css,javascrip这三种技术
熟悉得比我的指头更清楚.不借助任何工具,纯文本编写页面比公司中同行用dreamware写得还快,
当然比他们更能精确控制.

在soim的三个月后,我从一个"美工"转行做程序员,因为这三个月内我的java已经比公司一些java
程序员还要好一些.从此以后我开始真正了解什么叫程序.也正是在我努力学习汇编,c/c++的时候.
xmlhttp组件出来了.

这个组件确实比原来隐藏帧来刷新获取更新内容来更新某不刷新页面要方便多了.因为它能在本
页面实现这个效果.

在2002年左右,大家可能还记得当时MS的msn提供日程,电子邮件等功能,但当时那个页面,不是一般
的慢.而是相当的慢,可能是MS当时并没有投入多少主机硬件.反正中国网民上msn的web邮件系统就
如蜗牛一样的慢.

在msn邮件的页面上有一个功能就是排序.按发件人(MSN的WEB邮件系统非常搞笑,它不是以主题为
主链结打开邮件而是以发件人),主题,日期,邮件大小可以排序.但就在那样慢的情况下.MS对页面
内容排序这种行为仍然是用户提交排序关键字到服务端然后重新生成排序后页面再输出到客户端.
其实内容还是原来的内容,只是内容显示的顺序不同,但每排序就要有一次B/S交互.可以说完全没
有分离MVC的逻辑.一气之下我重写了它的页面.用xmlhttp获取内容,然后在客户端用javascript控
制显示内容.并在自己的邮件系统中使用.成为公司向客户推销WEBMAIL的卖点之一.这样做不但速
度快(就在客户端本地运行),而且大大减轻了服务端的压力.

其实如我这样对javascript,css,dhtml熟悉的程序员我想在中国可能有50%以上.所以AJAX这种
"东西"(叫它东西,因为它既不是一种新技术,也不是一种新概念,仅仅是一个新名字.无论是技术
还是概念我们在n年前就已经使用了),我竟然不知道为什么今天又突然火起来了.是因为以前大家
都没去用?一件穿旧了的衣服,二十年后突然从箱底拿出来了又当成宝贝了.

我知道当AJAX发展到一定规模肯定增加了新的元素.但是这些所谓的新元素也就是用一些固定的
组件"自动生成"一些常用功能的javascript.对于精通javascript的程序员而言它绝对不会比你
自己写的性能更高,更好控制.就象在服务端生成html标签一样,我觉得这种技术很搞笑.难道
<html:link href="'<%= "/" + name + "/index.jsp" %>'>比
<a href="<%=name%>/index.jsp">更清楚?管理更方便?阅读更流畅?执行更迅速?
也许是我太无知,我看不出任何优点,更不明白一个人已经很熟悉<a href="<%=name%>/index.jsp">
而又花额外的时间去学习<html:link href="'<%= "/" + name + "/index.jsp" %>'>.穿了一双挤
脚的皮鞋,难道就是因为大家都穿这种皮鞋?

我不需要学习这种技术,因为这种技术的实现我已经很清楚,它能做到的效果我用js/dhtml/xmlhttp
照样做到,而且可以做得性能更高.

当然每个人的情况不同,每个人的习惯也不同,有人离开IDE连hello world都不能完整写出来,有人
用记事本可以写得比IDE更快.所以是否需要学习某种东西是根据每个人自己的情况.我绝对不是说
大家都放弃AJAX,对于javascript/dhtml不是很熟悉的人(我是说你们可能其它方面很熟悉,比如你
知道每种平台的CPU指令)的人,用AJAX可以快速生成自己需要的功能.
我想说的是,学习什么需要有自己的判断,不在看流行什么就学什么.更不要学会什么就非要在项目
中用什么.你今天学习的东西也许很多年以后才会用到,而不是我学会什么流行的东西马上就要非要
应用到项目中以显示你会这种技术.

分享到:
评论

相关推荐

    学习AJAX最好的教材

    在"学习AJAX最好的教材.ppt"中,可能涵盖了以下内容: - AJAX的历史和发展:解释AJAX是如何从早期的DHTML和IFrame技术演变而来的。 - AJAX的基本原理:详细讲解XMLHttpRequest对象的用法,包括创建、发送请求和处理...

    Ajax全套学习教程

    Ajax全称为"Asynchronous JavaScript and XML",是一种在无需...通过深入学习Ajax,开发者能更好地构建动态、高效的Web应用程序。本套教程将覆盖以上所有知识点,并通过实例教学,确保学习者能够熟练运用Ajax进行开发。

    ajax学习很好的学习文档

    Ajax是一种使网页可以不刷新整个页面就能更新部分区域的技术,它通过JavaScript向服务器发送异步请求并处理响应。核心概念包括: 1. **XMLHttpRequest对象**:这是Ajax的基础,JavaScript通过创建XMLHttpRequest...

    .net中ajax学习解决方案

    在.NET框架中,AJAX(Asynchronous JavaScript and XML)是一种技术,它允许开发人员创建具有交互性和...通过深入学习和实践压缩包中的内容,你将能够更好地理解和运用这些知识,提升你的.NET Web应用程序开发技能。

    AJAX入门学习——ajax4jsf

    ### AJAX入门学习——ajax4jsf ...通过上述介绍,我们可以看出`ajax4jsf`为开发者提供了丰富的功能和灵活的配置选项,使得在JSF应用中集成AJAX变得更加简单和高效。希望本文能帮助读者更好地理解和应用这一强大的工具。

    Ajax学习全攻略,很好很全面的学习资料

    Ajax,即Asynchronous JavaScript and XML(异步JavaScript与XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。...通过深入学习和理解Ajax,开发者可以构建出更高效、更流畅的网页应用。

    ajax学习文档 很好的学习文档 希望大家好好的利用哦

    【Ajax学习文档】深入解析 Ajax,全称Asynchronous JavaScript and XML,是一种在不刷新整个...理解并掌握Ajax的原理和实践,对于提升Web开发技能至关重要,希望这份学习文档能帮助大家更好地利用Ajax进行高效开发。

    ajax基础学习资料

    **Ajax(Asynchronous JavaScript and XML)**是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器...通过不断实践和学习,开发者可以更好地利用Ajax来构建高效、动态的网页应用。

    初学ajax 有关于ajax的学习

    随着前端开发的复杂度增加,出现了许多Ajax库和框架,如Axios、Fetch API等,它们提供了更高级的功能和更好的兼容性,使得Ajax在现代Web开发中更加得心应手。 总结,Ajax是Web开发中的重要工具,它通过异步通信提升...

    ajax学习实例

    **Ajax(Asynchronous JavaScript and XML)技术是一种在无需重新加载整个网页的情况下,能够更新部分网页内容的技术。在网页应用中,它使得用户可以与页面...同时,结合实际的项目练习,可以更好地提升Ajax开发技能。

    ssm+ajax使用于学习ajax的新手案例

    6. **交互优化**:为了让用户体验更好,可以使用Ajax的异步特性,在用户输入时实时验证,而不是等用户提交表单后再反馈结果。这样可以即时反馈,减少用户的等待时间。 总的来说,这个案例帮助学习者理解如何在SSM...

    学习Ajax极好的例子

    Ajax,全称Asynchronous JavaScript and XML,是一种在无需重新...同时,结合Session管理,能更好地构建用户会话,提升Web应用的功能性和安全性。在实践中不断试错和改进,避免编写“垃圾代码”,真正提升编程水平。

    学习用的注册与登录(ajax+php)

    在IT行业中,构建一个用户系统是必不可少的环节,而注册与登录功能是用户系统的核心组成部分。这个"学习用的注册与登录(ajax+php)"项目提供了...同时,理解每个文件的作用并动手实践,可以帮助你更好地掌握这些技术。

    Ajax学习——DWR的参考书和实用案例学习总结

    **Ajax学习——DWR的参考书和实用案例学习总结** DWR(Direct Web Remoting)是一种优秀的开源框架,专门用于简化Web应用...结合参考书和实际案例,深入学习DWR,不仅可以提升技能,也能更好地理解和应用Ajax技术。

    学习Ajax后的所有重点

    综上所述,学习Ajax后,我们可以掌握网页的异步更新技术,实现高效的数据分页、CRUD操作,以及动态的地区选择等交互功能。同时,理解并熟练运用JSON数据格式,能更好地进行前后端的数据交换。这些技能对于现代Web...

    ajax学习经典源码

    通过分析和实践这些源码,你可以更好地理解Ajax的工作原理,掌握如何使用Ajax实现动态加载数据、异步通信等功能。记得在实际项目中,根据需求选择合适的请求类型、数据格式和错误处理策略,以提高应用程序的性能和...

    ajax学习笔记

    Ajax,全称Asynchronous JavaScript And XML,是一种用于创建交互性更强、更快速的Web应用程序的技术。它通过JavaScript的XMLHttpRequest对象实现了客户端与服务器之间的异步通信。这种技术的关键优势在于,它能够在...

    AJAX完全学习手册的源码(张银鹤编著)

    这个压缩包包含了一系列与ASP.NET结合的示例代码,可以帮助读者更好地掌握如何在ASP.NET环境中运用AJAX技术。 首先,让我们来看看AJAX(Asynchronous JavaScript and XML)是什么。AJAX并非一种单一的技术,而是一...

    AJAX学习(包括WCF)

    **标题与描述解析** 标题"AJAX学习(包括WCF)"表明了这是一个关于AJAX技术的学习资源,其中还涵盖了WCF(Windows ...通过学习这些资料,开发者可以更好地理解和掌握AJAX的异步通信机制,以及WCF在服务开发中的应用。

    Ajax的学习心得,希望对大家有帮助

    这使得网页应用可以更加迅速地响应用户的交互,并提供更好的用户体验。 在提供的代码段中,我们看到了一个简单的 Ajax 实现,它基于 JavaScript,用于创建一个通用的 XMLHttpRequest 对象,以处理与服务器的通信。...

Global site tag (gtag.js) - Google Analytics