本文已经过原作者授权翻译。
JavaScript于25年前(1995年12月4日)首次向公众推出。JavaScript 最初开发仅用了10天时间,便迅速成为最受欢迎的编程语言之一,如今全球有数百万的开发人员每天都在使用它。 2020年是它的25周年纪念日——对于这个已经成为最受欢迎的编程语言之一,这无疑是一个巨大的里程碑。
JavaScript 是前端开发的首选语言,后面并催生了微软的 Typescript,它是 JavaScript的超集,具有更强的可选类型系统,供开发人员在浏览器中运行时编译成JavaScript。
JavaScript 和 TypeScript 都符合 ECMAScript,这是 JavaScript 和 node.js 的标准,这要归功于Google强大的 V8 引擎,可以在浏览器之外运行应用程序。
JavaScript 对 Web 的影响是巨大的。科技巨头已经也拥抱了 JS。除了Google的V8,还有开源项目,例如Facebook的React
和 Google 的Angular
。当然,还有我们的 尤雨溪 的 Vue。
1995年5月,**Netscape (网景公司)和 Sun (太阳微系统公司) 推出了JavaScript,随后微软在1995年12月推出了Visual Basic (VB)
,将其作为一个标准,用于为其Internet Explorer
浏览器使用 VB 脚本创建web应用程序。甲骨文在2008年收购Sun **主要是为了插手Java及其庞大的开发生态系统。
JavaScript 的未来并不总是像今天这么确定的。
Cory House 是开发人员培训网站 Pluralsight 的一名JavaScript教育工作者,他回忆说,早期的JavaScript 是否能成功很难确定。“JavaScript 是几天内就完成了,最初只在一个浏览器中使用。微软的第一个浏览器附带了他们自己风格的JavaScript 叫 JScript。今天,JavaScript 还被用于构建桌面应用、移动设备应用、健身追踪器、机器人和众多嵌入式系统。它甚至是詹姆斯·韦伯太空望远镜的一部分。这个望远镜使用 Nombas 的 ES1 级嵌入式 JavaScript,作为其板载控制软件的一部分。”
”我们可以用面向对象的或函数式的方式编写代码。由于 JavaScript 有类似于c的语法,因此使用过其他类似c语言的人对它很熟悉。JavaScript 通过不断接受其他语言的好点子而保持着“更新”。
Pluralsight 的另一位作者Jonathan Mills指出,JavaScript 已不再局限于浏览器。他说:“现在,JavaScript 已经发展成为一个庞大的生态系统,对软件开发的每个领域都具有影响。”
微软的 TypeScript 在 GitHub
上越来越受欢迎,这要归功于基于 Javascript 的大型项目的存在,但它也可能被 Web Assembly
带来的新兴技术所取代。
W3C 于2019年12月批准该标准以来,主流Web浏览器现在以与HTML,CSS和JavaScript相似的级别支持WebAssembly
或Wasm
。
WebAssembly
是一个虚拟指令集架构,它支持web上的高性能应用程序,并为web上更多的AI
搭建了平台,这些AI
可以用于视频和音频编解码器、图形和加密计算。
Mills告诉ZDNet,到目前为止,Web Assembly在目标领域具有潜力。
Mills 说 “在构建 JavaScript 应用程序时,JavaScript 代码会按原样发送到浏览器,并在运行时在浏览器中进行编译和运行。WebAssembly 通过在部署之前编译代码来简化此过程,并有望在此过程中显着提高性能 ”。
“当构建图形或计算密集型的复杂Web应用程序时,这非常有用。然而,目前最主要的障碍是与WebAssembly
相关的最杰出的语言是Rust
和C
。JavaScript 之所以起飞,部分原因是因为易用性和快速开发风格,C 和 Rust 都没有这种品质。”
为了庆祝JavaScript诞生25周年,下面列出影响其历史的重要里程碑:
在CERN工作时,蒂姆·伯纳斯·李(Tim Berners-Lee)在一份名为“信息管理:提案”的文档中提出了他对网络的构想。
文章地址:https://webfoundation.org/about/vision/history-of-the-web/
第一个网站于1991年8月6日上线。它被用于万维网项目本身,并托管在Tim Berners-Lee的NeXT电脑上。
更多信息:http://info.cern.ch/hypertext/WWW/TheProject.html
NCSA Mosaic,或简称 Mosaic,是互联网历史上第一个获普遍使用和能够显示图片的网页浏览器。它是由伊利诺伊大学厄巴纳-香槟分校的NCSA组织在1993
年所发表,并于1997年1月7日
正式终止开发和支持。在当时人气爆发的大受欢迎。Mosaic 的出现,算是点燃了后期互联网热潮的火种之一。
后来网景导航者浏览器的开发工作,聘用了许多原有的Mosaic浏览器工程师,但是没有采用Mosaic网页浏览器的任何代码。传承网景浏览器代码的后裔为Firefox浏览器。
更多信息:https://en.wikipedia.org/wiki/Mosaic_(web_browser)
马克•安德森(Marc Andreessen)和吉姆•克拉克(Jim Clark)创立了后来的网景通信公司(Netscape Communications Corporation),并于1994年9月9日
推出了他们的第一个浏览器。最初它被称为Mosaic Netscape,但后来被重新命名为Netscape Navigator以避免与NCSA的商标问题。这个浏览器的内部代号是Mozilla,意思是“Mosaic 杀手”,它确实迅速成为了最受欢迎的浏览器。
更多信息:https://en.wikipedia.org/wiki/Netscape_Navigator
马克·安德森(Marc Andreessen)设想了一个更具动态性的Web,并认为需要一种易于Web设计者使用的语言。他招募了Brendan Eich,他在10天之内于1995年5月为Netscape浏览器编写了原型。该语言最初称为Moca,后来称为LiveScript,最后重命名为JavaScript(作为Java的辅助语言)。JavaScript的正式发布日期是1995年12月4日
。
更多信息:https://en.wikipedia.org/wiki/JavaScript
Microsoft 对 Netscape的 JavaScript 进行了逆向工程,创建JScript并将其作为Internet Explorer 3
的一部分。引入了不符合标准的专有扩展,使开发人员很难创建一个在所有浏览器中都能正常运行的网站。最终,Internet Explorer
成为浏览器大战中的主导软件。
更多信息:https://en.wikipedia.org/wiki/Browser_wars
Netscape向ECMA International
提交了 JavaScript,以创建标准规范,然后其他浏览器供应商可以实施该规范,这导致了1997年6月语言规范 ECMAScript 的正式发布。
更多信息: https://en.wikipedia.org/wiki/ECMAScript
1998年1月23日,在浏览器市场份额急剧下降的情况下,Netscape宣布它将发布Netscape Communicator 5.0
的源代码,希望它将成为一个受欢迎的开源项目。Mozilla项目就是这样诞生的。
更多信息:https://www.mozilla.org/en-US/about/history/
Microsoft 于1999年3月在Internet Explorer 5.0
中发布了XMLHttpRequest
的原始形式。XMLHttpRequest
是一种API,用于在Web浏览器和Web服务器之间传输数据,它在将来会被证明是有用的。
该版本增加了正则表达式,更全的字符串处理,新的控制语句, try/catch
异常处理,更严格的错误定义,数字输出格式和其他增强功能。由于ECMAscript 4停滞,该版本盛行了十年。
更多信息:https://en.wikipedia.org/wiki/ECMAScript
Douglas Crockford指定了JSON(JavaScript对象表示法),这是一种基于JavaScript子集的轻量级数据交换格式。JSON数据在前端更易于加载和使用,并且到本世纪末将取代XML,成为Web上的数据交换格式。
更多信息:https://www.json.org/json-en.html
Firefox 于 2002 年由Dave Hyatt
,Joe Hewitt
和Blake Ross
作为Mozilla项目的实验分支开始。为了对抗Mozilla Suite的软件膨胀,他们创建了一个独立的浏览器,首先命名为Phoenix
,后来命名为Firebird
, 最后是Firefox
。Firefox 1.0
版于2004年11月9日发布。Firefox
的速度,可用性和市场营销帮助它在Internet Explorer
上赢得了市场份额。在启动的五年内,Firefox占了所有Web浏览的近三分之一。
更多信息:https://blog.mozilla.org/press/2004/11/mozilla-foundation-releases-the-highly-anticipated-mozilla-firefox-1-0-web-browser/
杰西·詹姆斯·加勒特(Jesse James Garrett)创造了AJAX(异步JavaScript + XML
)一词,用以描述新兴Web应用程序(如GMail和Google Maps)背后的异步技术,该技术允许网页动态更改内容而无需重新加载。
更多信息:https://en.wikipedia.org/wiki/Ajax_(programming)
jQuery 是一个由John Resig设计的JavaScript库,用于简化HTML DOM树的遍历和操作以及事件处理,CSS动画和AJAX。在此期间启动的其他JavaScript框架/库包括Mootools和Prototype。
更多信息:https://openjsf.org/
Google于2008年12月11日发布了Chrome浏览器,该浏览器使用了与Safari
相同的WebKit
渲染引擎和一个更快的 JavaScript 引擎 V8。不久之后,针对Windows,OS X和Linux平台的开源版本以Chromium的名称发布。凭借快速的发布周期和对速度的关注,谷歌浏览器最终取代了所有其他浏览器。
更多信息:https://www.google.com/chrome/
Node.js 最初由Ryan Dahl于2009年3月基于Google的开源V8 JavaScript引擎开发。它为在Web服务器上使用JavaScript铺平了道路。Node.js函数是非阻塞的,允许服务器处理大量并发连接。它代表了“ JavaScript无处不在”范例,统一了围绕一种编程语言的Web应用程序开发。
更多信息:https://nodejs.org/en/
npm(最初是Node Package Manager的缩写)是Isaac Z. Schlueter
开发的JavaScript编程语言的软件包管理器。npm Registry是Node.js,前端Web应用程序,移动应用程序和其他应用程序的开源代码包的公共集合。
更多地址:https://www.npmjs.com/about
ECMAScript 5 是ECMAScript 3的十多年后的2009年12月发布,是ECMAScript 3
的增量升级版。雄心勃勃的ECMAScript 4
被正式放弃,代号为Harmony,某些功能成为ECMAScript6。原始ECMAScript 4计划的其他功能 将被删除以在后续版本中采用。形成了一个新的决心,即在整个TC39的共识下开发任何新的想法,以防止将来发生分裂的可能性。
更多信息:https://en.wikipedia.org/wiki/ECMAScript
AngularJS 由Misko Hevery于2010年10月发布,并迅速成为最受欢迎的JavaScript MVC框架。它提供了双向数据绑定,依赖项注入,路由包等等。在此期间启动的其他JavaScript框架/库包括Backbone,Ember和Knockout。该项目由Angular在2016年继承,由Google Angular团队领导的AngularJS的完全重写。
更多信息:https://angularjs.org/
TypeScript 是一种JavaScript的超集,它将静态类型添加到语言中,经过微软两年的内部开发,于2012年10月首次发布(0.8版本)。
React 是一个JavaScript库,用于构建可组合的用户界面,由Jordan Walke于2013年开发并开源。它由Facebook和一个由开发者和公司组成的社区共同维护。
更多信息:https://reactjs.org/
由Evan You创建的 Vue 是一个开放源代码, 它是一个 model–view–viewmodel 的前端JavaScript框架,用于构建的用户界面和单页应用程序。该项目的第一个源代码提交于2013年7月,Vue于2014年2月首次发布。
Next.js是由Vercel创建的开源React框架。它可以唯一满足静态和动态网站及应用程序的需求。Next.js的增量静态再生为用户提供了静态站点生成器的所有功能,并且可以添加无限数量的页面并在以后更新它们-无需重建整个站点。
更多信息:https://nextjs.org/
Svelte是一个由Rich Harris创建的免费和开源的前端JavaScript框架。
Svelte 是一种全新的构建用户界面的方法。传统框架如 React 和 Vue 在浏览器中需要做大量的工作,而 Svelte 将这些工作放到构建应用程序的编译阶段来处理。
与使用虚拟(virtual)DOM 差异对比不同。Svelte 编写的代码在应用程序的状态更改时就能像做外科手术一样更新 DOM。
更多信息:https://svelte.dev/
WebAssembly(缩写为Wasm)是基于堆栈的虚拟机的二进制指令格式。Wasm 被设计为可移植目标,用于编译高级语言(如 C/C++/Rust),从而可以在Web上为客户端和服务器应用程序进行部署,前驱技术是来自Mozilla和Google Native Client的asm.js。
更多信息:https://webassembly.org/
众所周知,Node.js 和 JavaScript 有着千丝万缕的关系,也有着很多的合作,但他们属于不同的fondation,办起事来非常不方便,所以有必要将这两个基金会合并以提高效率了。于是,在2019年3月13日,Node.js基金会 和 JS基金会 宣布合并为 OpenJS基金会。
OpenJS Foundation的主要目标是:
促进关键JavaScript和Web解决方案及相关技术的广泛采用和持续开发;
促进JavaScript开发社区中的协作;
在整个端到端JavaScript生态系统中为开源项目创建重心,指导它们迈向开放治理和多样化的协作者基础;
托管基础结构以支持托管的JavaScript开源项目;
通过推进项目和战略合作伙伴关系,来建立一个开放和可访问的网站。
更多信息:https://openjsf.org/
Den o是一个基于V8 JavaScript引擎和Rust编程语言的JavaScript和TypeScript运行时。它是由Node.js的原作者Ryan Dahl创作的。这是他在JSConf 2018年欧盟会议上发表的题为**“10 Things I Regret About Node.js”**的演讲中宣布的。Deno 在单个可执行文件中明确承担了运行时和包管理器的角色,而不需要单独的包管理程序。
更多信息:https://deno.land/
对于JavaScript的未来,有一件事很清楚:协作是关键。“浏览器大战”已经过去了,用户和开发人员都不想重温由于缺乏互操作性而带来的问题。幸运的是,开源已经盛行,并代表着JavaScript语言和社区的开发和治理的前进之路。
RECOMMEND
推荐阅读
01
《JavaScript编程精解(原书第3版)》
推荐理由
更新、更薄、更精华!JS之父推荐的书:比肩犀牛书的《JavaScript编程精解》第3版根据ES6新功能全面更新。系统介绍如何编写高效的代码,在游戏式开发中轻松掌握JS技术,是系统学习JS的首选之作。从JavaScript的基本语言特性入手,提纲挈领地介绍JavaScript的主要功能和特色,每章配有总结和习题,配套码源提供下载。包含5个实战章节,帮你快速上手实际项目。
02
《JavaScript权威指南(第6版)》
推荐理由
“犀牛书”已经成为JavaScript程序员心中公认的权威指南。凭着完整的内容、细致的讲解以及海量针对性的示例而受到读者的一致好评,这本厚达1010页的巨著主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScriptAPI。初学者读完本书,将会对JS有全面的认识,快速掌握JS最核心的技术。而有经验的开发者读完本书,会让你对JS的理解有从量变到质变的深层次飞跃。本书2021年一季度将全面更新,敬请期待。
更多精彩回顾
书讯 | 12月书讯 | 年末上新,好书不断
书单 | 机器人时代已来!推荐几本机器人学硬核好书
干货 | “MySQL Analytics Engine”来了
收藏 | 中台的本质及中台建设的4点思考
上新 | 复杂的密码学也可以人人可懂
赠书 | 【第35期】数字化转型到底该怎么做?