当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,我可以做得更好相关推荐

  1. AJAX安全-Session做Token

    个人思路,请大神看到了指点 个人理解token是防止扫号机或者恶意注册.恶意发表灌水,有些JS写的token算法,也会被抓出来被利用,个人感觉还是用会过期的Session做token更好,服务器存储, ...

  2. Ajax学习-Ajax简介

    最近的课程安排又有Ajax.虽然自己了解一点Ajax方面的东西,但是感觉自己还需要学习好多,那就开始在学习一下Ajax吧~~~~....... (1)Ajax是指异步JavaScript及XML(As ...

  3. 学习Python技术,怎么才能更好找到工作

    很多人学习一门新技术的原因都是想找一份好的工作,[Python]语言火爆的时代,[Python编程]技术成了很多人都想学的一门技术,那学习Python技术,怎么才能更好的找到工作呢?[Python培训 ...

  4. 程序员,其实你可以做的更好

    写代码,这个是每个程序员(无论是菜鸟,还是大牛)都会的技能和几乎每天都做的事,如同厨师会炒菜.民工会码砖一样:虽然都会,但看其代码就可以大概知道此人技术咋样,最起码可以看出其代码写的好与差.--好的代 ...

  5. 如何帮助企业把风控做得更好?(续篇)

    (继上篇: 如何帮助企业把风控做得更好?) 在Gartner提出的5个风险检测层级中,第一层的终端风险识别,对于移动金融业务的欺诈风险检测,具有特殊的意义,这是由移动金融业务的风险特点所决定的. 虽然 ...

  6. 如何帮助企业把风控做得更好?

    企业级风控系统对于风险的管控,通常可以分成几个阶段: 1.风险识别 企业应当把识别移动金融服务特有的风险作为企业战略规划中的重要组成部分,应该从移动设备.金融产品.金融服务以及技术等不同层面有机结合, ...

  7. 转:什么都没有反而可以做得更好

    个人理解:关于开会发言的心理解析的确有意思 最终决定我们表现如何的,是我们做了什么,而不是我们计划做什么. 成功往往是行动所致 计划可以给我们提供一份经过深思熟虑的路线图 -- 详细刻板的计划同样会阻 ...

  8. python 优雅退出_Python学习教程:Python 使用 backoff 更优雅的实现轮询

    我们经常在开发中会遇到这样一种场景,即轮循操作.今天介绍一个Python库,用于更方便的达到轮循的效果--backoff. Python学习教程:Python 使用 backoff 更优雅的实现轮询 ...

  9. 如何将深度学习与你正在做的事情相结合?

    作者 | 李嘉璇 文章来源Gitchat,AI科技大本营合作发布 前言 人工智能是目前各行各业最火热的技术,如果说前两年是『互联网+』,那么这两年一定是『AI+』,利用深度学习的技术,给各行各业赋能, ...

最新文章

  1. Android基础建设之Activity,ViewRoot,WindowManager,Window,View
  2. iOS 11开发教程(二十)iOS11应用视图美化按钮之设置按钮的状态
  3. html/jquery 常用的输入与获取参数
  4. Python 列表和元组
  5. Mach-O的动态链接相关知识
  6. [python学习] 专题八.多线程编程之thread和threading
  7. Tomcat8.01及nginx-1.8.1安装
  8. 推荐分享一个自定义绑定控件(附源码)
  9. while (n-- > 0) 的用法
  10. 正则表达式电话和姓名加星
  11. 烂泥:使KVM显示VM的IP地址及主机名
  12. Retrofit结合RxJava使用指南
  13. python调用谷歌地图_谷歌地图API Python/R
  14. 串口服务器与协议转换器的区别,串口服务器和串口转以太网模块区别
  15. ItextPdf给PDF批量插入图片
  16. 实现Office文档的在线查看等功能
  17. 计算机控制系统的模拟控制器,导 读 利用计算机代替常规的模拟控制器,使它成为控制系统的一个组成部分,这种有计算机参加控制的系统简称为计算机控制系统。...
  18. 【FFT】快速傅里叶变换详解
  19. php的变量规定前面要加什么字符,PHP_神盾加密解密教程(一)PHP变量可用字符,先来说说php变量的命名规则, - phpStudy...
  20. 【泛微OA】常用配置文件修改方式

热门文章

  1. 小米跳智能家居大坑,丢芝麻捡西瓜值得吗?
  2. java for coun,为什么程序中的一段for循环没有被执行
  3. 如何搭建真正能洞悉数据的领导驾驶舱
  4. 联想服务器x3250 m5文档,【联想x3250 M5参数】联想x3250 M5系列服务器参数-ZOL中关村在线...
  5. 通向架构师的道路(第九天)之weblogic的集群与配置
  6. 聪明的数据结构和笨拙的逻辑代码
  7. 国科大学习资料--最优化计算方法(王晓)--期末考试试卷1
  8. 整理一些es6的基础东西。记录成长
  9. 软件质量改进(一)------过程改进方法
  10. C语言编程求小球自由落体高度