2
前言:我是JavaScript,如果你还不认识我,不妨先看看《Web技术的前世今生(一)

平静的生活已经有一段日子了。

这一天,HTML大哥面露不悦地走过来问我:

“Js,你是打算和我们分家吗?”

“大哥,您这说的哪里话,我什么地方做的不对么?”我一脸茫然地回答道。

“哼,我可是听PHP老弟都说了,你最近总是让它给你返回服务器上的数据。你就说有没有这回事吧!”

“是有这么回事,不过⋯⋯”

“看吧,我就知道你小子翅膀硬了,敢跟你大哥抢生意了。谁不知道把服务器端的数据构建成网页是你老哥我的活,你小子⋯⋯”

“等等,大哥,是您误会了”,看大哥越说越火大,我赶紧打断了它。“您还记得我们那个叫Google的客户么?”

“别和我提那个偏执狂,上次和它合作那个电子邮箱的项目,我都费了老大劲了,它还是不满意,硬是说要做到在不重新加载整个网页的情况下,对网页的部分内容进行更新。要知道一直以来,我的工作方式都是每一次请求就要重新载入一个新的页面,它这不纯属是难为人吗⋯⋯呃,现在在说你要自立门户的事呢,你扯它干嘛?”

“大哥,您先别生气,听我给您解释。就是那个叫Gmail的项目需要局部刷新的问题,之前您不是还问过我行不行吗?当时我没有想到办法。但前几天我又好好琢磨下,发现似乎是可行的,我可以通过一个叫XHR的家伙去和服务器交换数据,然后再将取得的新数据通过dom插入到当前页面中就可以了。最近我也是一直在研究这事,还没来得及和您说呢。”

“哎呀,你看我这脑子”,大哥满脸愧色地说:”弄了半天原来你是在帮老哥我啊!刚才大哥的态度⋯⋯”

“大哥”,我赶紧再一次打断大哥的话,“您就别自我反省了,现在办法有了赶紧去告诉那个偏执狂才是正事,毕竟是个大客户,丢了多不划算。”

“哦,对对对,我这就去。”

伴随着大哥的心结被解开,这场风波总算是过去了。

(猿知原味注:XMLHttpRequest(XHR)作为JavaScript的一个对象,可以用来在浏览器和服务器端传输数据。然而自从它1998年问世以来却很少被重视,直到Google发布了Gmail、Google Maps等一系列运用它开发的局部刷新的Web产品之后,这项异步请求的“新”技术才突然大火起来,并且还有了一个在Web发展史上影响深远的名字:Ajax)

时间来到了2005年,大概就是在那个时候,有人开始称呼我们一家“Web前端”。我们前端家族成员最主要的特点就是运行在浏览器上,所以像PHP、ASP等那些运行在服务器上(后端)的家伙这辈子是别想落户到我们家了。

图片描述

提到浏览器,准确地说是浏览器们,我在这里必须要吐槽一下。由于是商业产物,所以整天为了点市场份额打的你死我活的。原本我对它们之间的争斗没有兴趣,但直到有一天我发现,我构建的同样一段脚本,居然在它们身上呈现出的效果不统一,而且这种情况随着卷入争斗的浏览器种类增多变的越来越复杂⋯⋯

图片描述

“该死的Js,为什么按钮的点击没起作用?”,“新版本的Js不能阻止事件冒泡了吗?”,“这Js八成是抽风了⋯⋯”

那段日子,我经常替浏览器们背锅,承受着大家的误解。就在我最烦心的时候,家里来新人了——jQuery。

“嘿伙计,有啥绝活给我们露一手”,大哥先发话了。

“小意思”,jQuery一边回答一边完成了一段ajax调用的代码,期间也操作了dom。

看着这段虽说像极了意大利面条、却着实短小精悍的代码,我和大哥正在惊诧的时候,jQuery又发话了:“欧了大哥,现在这段代码可以放到任何浏览器上运行了。”

“你是说⋯⋯你能做到和js一样的事,并且还⋯⋯还解决了浏览器兼容的问题?”大哥惊讶的说话都开始结巴了。那一刻,我突然感受到前所未有的危机感。

“也不能完全这么说,我的存在只是为了让人类尽可能不用考虑浏览器兼容的问题,并且以更优雅的方式更方便地操作Web页面,实际上背后的功臣还是js前辈,我只是它的小跟班。”

听了jQuery的一番话,我热(ru)泪(shi)盈(zhong)眶(fu)地走上前去握住它的手,“欢迎来到咱们家,以后就是一家人了。”

打那以后,我的生活就惬意多了,除非有jQuery解决不了的问题我才出面,一般而言这个小跟班都能很出色的完成任务。

然而与此同时,PHP老兄的日子却不那么好过,Web后端正酝酿着一场变革。

故事读完了,还是意犹未尽?没关系,关注“猿知原味”公众号(yz--yw),还有一大波生动有趣的干货等着你。

传送门:《Web技术的前世今生(一)》《Web技术的前世今生(三)》


Andersen
27 声望7 粉丝