时间回到 1999 年,若是预测 20 年后 JavaScript 会成为世界上最流行的编程语言之一,也许你会怀疑。由于当时 JavaScript 没法完成专业编程语言可以完成的工做,甚至不是一门严谨、正式的编程语言。当时有不少成熟的工具供 Web 开发人员使用。好比:Java、PHP 等。前端
在 1995 年,开创了网景浏览器的网景公司以为应该有一种更简单的语言被创造出来,用于解决浏览器和用户的交互问题。当时的网景正处于和微软的市场竞争中,与此同时开启了与 Sun 公司战略合做。他们聘请了 Brendan Eich 来研究这项工做,最终在 10 天内完成了 JavaScript 初版。起初,Brendan Eich 是想研究 Scheme 语言做为网页脚本语言的可能性。可是公司但愿创造一种看起来像 Java,可是比 Java 简单的语言,这也是为何叫 JavaScript 的缘故。程序员
在最初的五年,JavaScript 一直是那些未能具有 Java 编程能力人员的入门选择。他们包括业余爱好者,用来作简单的功能;网页设计师之类的新技术工做者,让网页看起来更好看,好比实现比 <blink>
标签更精致,比 GIF 动图更现代化的功能。数据库
在专业领域,JavaScript 主要充当胶水语言的做用,实现更复杂的网页交互设计,好比:交互按钮、弹出菜单、页面特效等。不久以后,JavaScript 被大量使用于鼠标点击,而后触发图像的变化之类的功能。编程
虽然开发人员认为,实现一个按钮动做,须要将代码分发到每一个人的浏览器去执行,是不合理的。可是不多人想要去对 JavaScript 作进一步的更新改造。由于大多数程序员更喜欢用服务器端编程语言去实现 JavaScript 代码。若是说让 JavaScript 代替服务器端编程语言作这些事情,当时的人们会以为很荒谬。就像要用 Excel 代替数据库实现存储过程同样。浏览器
今天人们批评 JavaScript,一般是由于这门语言的局限性,好比:弱类型、笨重的 DOM 对象,== 和 === 比较的混乱等等。可是这些不是 JavaScript 早年看起来糟糕的缘由。即便语言糟糕,可是在合适的时间出如今合适的领域,也会让一门语言变得相当重要。JavaScript 是全部浏览器都支持的惟一语言,就像 Web 要统领整个世界同样,它在合适的时间出如今了合适的领域。安全
当时真正限制 JavaScript 的是它有限的功能,好比:没法直接访问文件系统、显示器或任何硬件。另外,JavaScript 不能够操做 Web 服务器的任何内容,例如存储在数据库中的用户列表或产品数据等,也不能够在服务器端运行业务逻辑。只能应用于本身有限的领域,增长网页的交互特效。服务器
微软实现了 JavaScript 的突破。今天的微软,是开源领域重要的公司之一。可是,当时的微软是反开源的战士,以“拥抱、扩展和消灭”的理念战胜竞争对手。网络
当时,微软的一个团队正在研究如何为 Outlook 实现响应更快的 Web 前端。他们构建了一个叫 Outlook Web Access 的产品。微软的目标相对保守,但愿开发一个能够在浏览器中浏览邮件的阅读器,它不须要每隔几秒就要刷新整个页面,而是在后台能够检查邮件是否更新。在如今看来,十分简单。但当时 Gmail 尚未诞生,谷歌公司也才成立几年。编程语言
微软的团队用 XMLHttpRequest 实现了与服务器的交互。使得 JavaScript 能够发出 Web 请求,这样网页就能够利用 Web 服务器的全部资源,好比数据库、执行服务器计算、安全测试、安全验证等等。同时也实现了页面请求在后台运行。工具
显然早期的 XMLHttpRequest 不是完美的,好比它具备大小写不一致的奇怪命名方法,使得 JavaScript 同样区分大小写的语言变得麻烦。另外只能发送和接收 XML 信息。然而,一般状况下,信息能够是任何普通文本,HTML 代码块,序列化为 JSON 的 JavaScript 对象。其实,最大的问题是 XMLHttpRequest 依赖于 ActiveX,使得它只能在 Windows 计算机上运行,并且只能在 Internet Explorer 中运行。
可是这些缺陷并无阻止它的发展,在短短几年内,其它浏览器提供了本身对 XMLHttpRequest 的相同实现,并且不依赖于 ActiveX。虽然微软首先建立了 XMLHttpRequest,可是在其 Web 开发中对这项技术的应用速度比较慢,在基于 Web 的电子邮件系统 Hotmail 中使用犹豫不决。相反,谷歌一直在使用 XMLHttpRequest,并在 2004 年推出 Gmail,2005 年推出谷歌地图。
XMLHttpRequest 是改变 JavaScript 的关键因素,此后也陆续有几回关键节点。
多年来,JavaScript 发展缓慢,问题在于,市场领先的浏览器 Internet Explorer 是随着操做系统升级,也就意味着升级的速度比较慢。开发人员被迫要检查不一样浏览器的版本,从而试图解决兼容问题。
2006 年,开发人员经过 jQuery 的形式得到了解决方案,虽然今天 jQuery 有点过期了,可是在 10 年前,若是想更快的解决浏览器兼容,把更多的时间花在构建功能上,它是必不可少的工具。
2008 年,谷歌发布了一款名为 V8 的新的 JavaScript 引擎。像 jQuery 提供了普遍的浏览器兼容方案同样,V8 带来了极高的性能。并且它是一个独立的开源项目,其它的项目均可以使用它。在以后,为 Node.js 和 Electron 的出现奠基了基础。
同年,HTML5 第一份正式草案公布。虽然 HTML5 自己不是关于 JavaScript 的,可是与新的 JavaScript API 配合使用,使得开发人员拥有了存储本地数据、管理浏览器历史记录、使用音频和运行后台工具的能力。再一次缩小了 Web 应用和桌面应用之间的差距。
JavaScript 的成功是其在浏览器中的特殊地位的必然结果,仍是纯粹是运气好?很差说,不过大部分时间 JavaScript 都不是人们最爱的语言。可是它的发展证实了决定新技术是否能够走下去,是靠它的影响力。若是一门语言它的受众足够广,即便是开始作的很差,也没有关系,在实践中它会变得愈来愈好。
JavaScript 的将来延续了快速发展的道路。咱们在 Web 服务器上能够运行 JavaScript(Node.js),而且能够构建桌面应用(Electron)。进一步的发展,如 Typescript 能够编译成纯 JavaScript,为开发人员提供了构建大型应用的工具。并且在将来,WebAssembly 可能会完全打破语言的限制,让开发者能够搭载 JavaScript 引擎来使用他们任何想要使用的更高级别的语言。
须要认可的是,JavaScript 是伟大的语言之一。Brendan Eich 将 JavaScript 放入了网景浏览器,而咱们把整个世界放入了浏览器,构成了现代网络。
关注公众号「展白说」,获取更多有价值的内容。