作者 | Matthew MacDonald
译者 | 苏本如,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)

以下为译文:
如果你在1999年预测到,JavaScript将在20年后成为天下上最盛行的措辞之一,你要么有通灵术,要么是个疯子。
在这个世纪之交出身的JavaScript不仅仅无法做到一个专业措辞所能做到的统统,它乃至没有被设计成一个严明的编程措辞。毕竟,须要创建Web运用程序的开拓职员已经有了他们喜好利用的成熟工具。那便是Java,通过applet嵌入系统。
但是在1995年,网络浏览器先驱网景(Netscape)公司意识到,他们须要为人们供应一个更大略的选择。那时候他们处境困难,与微软的市场大战正在紧锣密鼓,即将与Sun微系统公司达成重大计策互助伙伴关系,韶光紧迫。他们雇佣了布兰登·艾奇(Brendan Eich),哀求他尽可能快地创造一种新的措辞。他在10天内就完成了JavaScript的第一个版本,恰好遇上了这个俊秀的浏览器:
Netscape 2: JavaScript的首次登场
艾奇真正想做的是构建一个像Scheme这样的学术编程措辞的浏览器托管版本(网页脚本措辞),但网景公司的愿景与此不同。他们想要一种看上去与Java足够相似,纵然它的行为和Java不一样的措辞。两个类似的名字:Java和JavaScript,导致了多年的混乱。
我是根据公司高层指令开拓这门措辞,让它看上去和Java足够相似,但又不要让它太大。它只是有那么点儿像这种屈曲措辞的弟弟,对吧?
——布兰登·艾奇滚动按钮时期
在它出身后的前五年韶光里,Javascript补充了那些不善于Java编程的人的空缺。这些人包括一些编程生手、业余爱好者和匆忙做些大略编程的人,也包括网页设计师这个新的技能工人阶层。他们的事情是使网页用户界面看起来时髦俊秀和图形化,他们追求一种比<blink>标签更精细,比旋转球体GIF图像看上去更当代的效果。
而在专业领域,JavaScript的紧张事情是创建一种用户界面粘合剂,将设计好的网页粘在一起。每次你须要一个交互按钮,一个弹出菜单,一个立体图像效果,你都须要JavaScript。
那么谁想要一个翻转按钮呢?答案是:所有人。
2000年旁边的翻滚按钮
在那不久,JavaScript就被大量利用,用来做天下上最不主要的事情:每次鼠标从图像上面经由时交流一张图像。
只管认为开拓职员会利用代码来自动化闪光按钮,然后将代码与网页一起分发,彷佛是个猖獗的想法,但我们每个人都这样做过,而且做了一遍又一遍(本日,CSS供应了这种折叠效果,它利用样式设置和动画「而不是预师长西席成的图像文件」以更易于掩护的办法供应这种折叠效果)。
很少有人希望JavaScript能走得更远。许多编码职员更乐意利用做事器端编程措辞,这种措辞可以在命令中天生精确的JavaScript代码。在那个时候,Javascript可以为运用程序中的业务逻辑供应动力的想法,和想象用Excel宏更换数据库存储过程一样荒谬。
沙箱(Sandbox)囚徒
本日,当人们批评JavaScript时,常日是基于其措辞本身的局限性:打了补丁的OOP特性,弱类型安全性,笨重的DOM模型,对“==”和“===”的困惑,等等。但这些并不是JavaScript在其早期被看作一门糟糕的编程工具的缘故原由。毕竟,有许多丑陋的编程措辞(包括BASIC,COBOL,SQL和 PHP),由于它们涌如今精确的韶光和精确的地点,而变得至关主要。JavaScript作为所有Web浏览器原生本机支持的唯一措辞,涌如今全体天下都被网站接管的韶光点,它绝对属于在精确的韶光涌如今精确的位置的环境。
JavaScript的真正局限性是沙箱:一种可以将代码固定到得当位置的严格掌握的环境——沙箱将JavaScript与桌面天下隔离。例如,JavaScript代码无法直接访问文件系统、显示器或任何硬件资源。更严重的是,它隔离了JavaScript和Web做事器上的所有资源,比如存储客户列表和产品目录的数据库,以及运行业务逻辑的做事器端代码。被完备伶仃的JavaScript,除了在页面上摆弄按钮之外,险些没有什么其它能做,这一点也不令人奇怪。
利用XMLHttpRequest打开管道
奇怪的是,有确实的证据表明确实是微软拯救了JavaScript。但不是本日的这个在每个操作系统上都拥抱开源开拓的微软,而是那个赤裸裸的反开源的斗士,和以“拥抱,扩展和消灭”的理念消灭其竞争对手的微软。
事情是这样发生的。大约就在全天下都在猖獗利用滚动按钮的同时,微软的一个团队正在研究一种使Outlook的Web前端更具相应性的方法。他们正在构建一个名为Outlook Web Access的产品,其外不雅观如下:
2000年的Outlook Web Access
微软团队的目标相对温和。他们想构建一个比在浏览器中运行更高效的电子邮件阅读器,最主要的是,他们不想每隔几秒钟刷新全体页面。因此,他们正在研究一种让网页在后台悄悄地检讨新邮件的技能。这一目标可能看起来并不震天动地,但请记住,Gmail在那时候还没有发明出来。而事实上,那时的全体谷歌公司也才只有几年的历史。
微软团队用一个名为XMLHttpRequest的ActiveX组件创建了一个小的管道系统。XMLHttpRequest的基本思想很大略,它为JavaScript代码供应了一种天生Web要求的方法。就像一个Web浏览器可以联系一个Web做事器并发出一个要求一样(例如,“嘿,请把那个页面给我!
”),JavaScript代码可以利用XMLHttpRequest工具发出自己的要求(例如,“嘿,请再给我发些邮件”)。
溘然间,一个网页就可以利用Web做事器的所有资源了。须要数据库中的一些数据吗?请呼叫做事器并要求它发送。须要做事器实行一个打算,一个安全测试,一个超级机密验证检讨吗?请呼叫做事器并要求它实行。最主要的是,这些“呼叫”都发生在后台,前台页面保持不变。
XMLHttpRequest并非没有奇怪之处。首先,它的命名很奇怪,大小写不一致,在像JavaScript这样的区分大小写的措辞中,这是一件令人头痛的事。其次,这个名称表明你的代码发送和吸收的是XML格式的。然而事实上,险些可以是任何格式:普通文本、HTML块或序列化为JSON的JavaScript工具。但是,最大的问题可能是XMLHttpRequest工具是利用ActiveX构建的,这意味着它只能用于Windows打算机,而且只能在Internet Explorer中事情。
但是这些奇怪之处都没有阻挡它提高。在短短的几年内,其他浏览器都供应了自己的XMLHttpRequest实现:同样的工具,但没有任何ActiveX的难题。
只管创建了XMLHttpRequest工具,但微软在他们自己的Web开拓中迟迟没有充分利用它。他们不愿将它用于基于Web的公共电子邮件系统Hotmail,相反,他们一贯等待,直到谷歌首先在2004年的Gmail,然后在2005年的谷歌舆图中利用XMLHttpRequest并震荡了Web开拓天下。这是一个真正的圣杯:基于Web的程序,具备了桌面运用程序的相应能力。
2005年的谷歌舆图
当代化之路
XMLHttpRequest是改变JavaScript进程的关键成分。然而,在那之后还有几个拐点。
多年来,JavaScript措辞一贯结束不前。问题在于,市场领先的Web浏览器Internet Explorer的升级是基于操作系统升级的韶光尺度。也便是说,Internet Explorer升级速率非常缓慢,开拓职员被迫编写检讨浏览器版本的代码,并考试测验动态适应。
2006年,开拓职员得到了jQuery形式的办理方案。只管jQuery本日已经由时了,但在10年前,如果你想花韶光构建功能而不是办理浏览器兼容性问题,它是一个必不可少的工具。
2008年,谷歌发布了一个名为V8的新JavaScript引擎。就像jQuery首次为开拓职员供应了广泛的兼容性一样,V8也给他们带来了惊人的性能。而且由于V8引擎是一个独立的开源组件,其他项目也可以利用它。稍后,这将为Node.js和Electron等创新打开大门。
2008年的晚些时候,HTML5的第一份事情草案涌现了。HTML5本身并不是关于JavaScript的,但它与新一波的JavaScript API结合在了一起。溘然间,开拓职员拥有了用于存储本地数据,管理浏览器历史记录,利用音频和运行后台任务的工具。这些再一次缩小了Web功能和桌面功能之间的差距。
当代JavaScript
JavaScript的成功是否是其在浏览器中的特权地位的一定结果?还是依赖运气和完美机遇的侥幸?
有一点是肯定的:JavaScript是在压力下得到成功的。在它面世往后的大部分韶光里,JavaScript没有成为任何人的最爱。很多人先是支持Java小程序,然后是Flash,乃至Silverlight。但JavaScript面对这些寻衅者,并彻底击败了它们。
大概最公正的评价是,JavaScript证明了每个开拓职员在内心深处都明白的道理。也便是说,对一项新技能来说,最主要的成分是它的影响力。如果你的技能具有卓越的影响力,它就不须要从成为最好的开始,只要足够好就可以了。
Javascript的未来将会沿着一条快速发展的道路延伸。现在,我们有运行在Web做事器上的JavaScript(多亏了Node.js),和支持桌面运用程序(多亏了Node.js和Electron)的JavaScript。我们有类似于JavaScript的TypeScript措辞,它能够编译成JavaScript,让开发职员能够在不危害其道德的情形下为网页编写代码。在未来,WebAssembly可能会彻底冲破措辞限定,让开发职员可以通过支持JavaScript引擎来利用他们想要的任何更高等的措辞。
是时候承认了,只管JavaScript有很多漏洞和不一致之处,但它是最伟大的开拓措辞之一。布兰登·艾奇将JavaScript置入Netscape Navigator中,我们把全体天下塞进了浏览器,结果造就了当代的互联网天下。
永久相信JavaScript(Always bet on JavaScript)。
——布兰登·艾奇原文:https://medium.com/young-coder/how-JavaScript-grew-up-and-became-a-real-language-17a0b948b77
本文为CSDN翻译,转载请注明来源出处。
【END】