发布于 2026-01-06 3 阅读
0

JavaScript 如何主导 Web 开发?JavaScript 的发展历程;参考资料;DEV 全球展示挑战赛(由 Mux 呈现):展示你的项目!

JavaScript 如何主导 Web 开发

JavaScript 的故事

参考

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

JavaScript 的故事

网络变得易于访问

20 世纪 90 年代,伊利诺伊大学国家超级计算应用中心的开发者马克·安德烈森发布了第一个用户友好的图形化网页浏览器(“ Mosaic ”)。随后,“ Mosaic ”被 Mosaic Navigator 取代,后者后来发展成为 Netscape Navigator。

这些“导航器”(我们现在称之为网络“浏览器”)使每个人都能访问网络;而不仅仅是那些知道如何使用命令行的人。

Java 和 Web

Sun Microsystems 于 1995 年被收购,并发布了 Java 语言。Java 的语法借鉴了 C/C++ 语言,但有一个关键区别:Java 是一种编译型语言,只要系统上安装了 Java 虚拟机,它就可以在任何操作系统上运行。这体现了“一次编写,到处运行”(WORA)的理念。通过重新设计代码库使其在虚拟机中运行,开发人员可以开发单一代码库,从而加快开发速度并减少错误。

Java“小程序”(applet)的出现正是为了进一步发展这一理念,并将其应用于互联网领域。Java小程序本质上就是一个嵌入HTML网页中的Java应用程序。虽然简单,但这却让Java开发者不仅能够部署桌面应用程序,还能使用他们熟悉的强大而高级的编程语言来开发Web应用程序。如今,只要客户端系统上安装了Java虚拟机,Java应用程序就可以通过互联网传输到任何操作系统,并在大多数计算机上运行。

不可否认,Java Applet 非常实用;但它存在一个致命缺陷——Java Applet 实际上与 DOM(文档对象模型)完全隔离。这种隔离意味着 Java Applet 无法“看到”(感知)或修改 DOM。与其他所有 Java 代码一样,Java Applet 必须先通过虚拟机编译才能在客户端系统上运行,而虚拟机只能解析 Java Applet,无法解析 DOM——这实际上将 Applet 与网页隔离开来。

Netscape 和 JavaScript

为了开发出更动态的应用程序,摆脱编译过程和运行 Java 小程序所需的虚拟机的限制,Netscape聘请Brendan Eich构建了一种全新的“脚本”语言,使开发人员能够向 HTML 文档添加交互性和功能,为 HTML 内容添加动画效果,执行条件验证,并为更动态、更全面(即“更像桌面”)的浏览器体验奠定基础。

Netscape要求Eich创建这种新的“脚本”语言,并提出了以下几个要求:

  1. 艾希的新语言需要将大量功能集成到最少且简单的代码中。
  2. 该语言应采用类似 Java 的语法,使现有开发人员能够轻松上手。

为了让这门语言能够以最少的工作量完成很多事情;艾希试图采用函数式编程方案,使编写能够处理和/或生成数据以及用极少的代码行响应输入的程序变得快速而简单。

虽然可以争论哪种编程范式是“最好的”,但 Eich 试图将“对象”和“类”的面向对象编程结构中封装功能和数据的能力结合起来,但要消除像 Java 这样的传统面向对象编程语言中常见的僵化结构和更复杂的设置。

基于这些需求,艾希创建了一种名为“Mocha”的新编程语言。Mocha 是一种解释型、弱类型函数式编程语言,专为 Web 设计。尽管名称几经变更,Mocha(又名“JavaScript”)仍然是我们今天所熟知的 ECMAScript 或 JavaScript 的基础。它无需编译,无需虚拟机,即可与 DOM 进行原生交互。这种新编程语言是 Web 应用中第一个可行的 Java 小程序替代方案。

竞争与浏览器大战

随着网景公司的发展不断取得进展,网络应用程序的市场份额和收入也变得显著,许多其他公司纷纷加入,试图抢占网络应用程序市场的份额。1996年,软件巨头微软对JavaScript进行了逆向工程,以运行其“导航器”或网络浏览器——Internet Explorer

为了占据市场主导地位,微软不仅在 Internet Explorer 中支持 JavaScript,还将该浏览器与 Windows 95 操作系统捆绑在一起。这样一来,Windows 操作系统用户在首次启动计算机时,即可直接使用预装好的浏览器,无需任何安装或配置。

微软的策略最终取得了成功,但微软并不满足于仅仅在这个新兴市场中竞争,而是希望占据主导地位。为了实现这一目标,微软开发了自己的网页语言——CSS,即“层叠样式表”。有了CSS,开发者不仅可以创建交互性强、美观的网页。

不久之后,Internet Explorer 就成为了大多数人使用的默认浏览器。微软的策略奏效了。Netscape 随即对微软提起反垄断诉讼,甚至损毁了微软办公楼外的“e”标志雕像。尽管 Netscape 竭力对抗这家软件巨头,但到 1999 年,Internet Explorer 仍然占据了 99% 的市场份额。

结束战争

网景公司当时正处于劣势,市场份额迅速下滑。尽管公司可能无法生存下去,但其推进网络发展的使命对公司领导层而言仍然至关重要。

为了确保网络对所有人开放和可访问,网景公司将其技术开源,并将所有权移交给非营利组织 Mozilla。在 Mozilla 的管理下,“Mocha”(后更名为“LiveScript”,最终演变为 JavaScript)于 1997 年被 ECMA 国际标准组织标准化为“ECMAScript”。

秉承着维护网络开放性和可访问性的使命,Mozilla 开发并发布了自己的开源网络浏览器——Firefox。随着竞争对手不断涌入市场,推出各自的浏览器(Opera、Safari、Firefox 等),Internet Explorer 的市场主导地位开始逐渐丧失。尽管面临竞争,Internet Explorer 仍然保持着市场主导地位,到 2010 年其市场份额仅下降至 50%。

面向对象编程还是函数式编程?

Mocha/LiveScript/ECMAScript/JavaScript 等编程语言最初采用函数式编程方法,其核心思想是按照“模式”(scheme)执行过程。我们现在称这种模式为 DOM,即文档对象模型。这种函数式编程方法使得开发简单的应用程序变得轻而易举,但它与当时应用程序开发中常用的面向对象编程语言有着本质的区别。

艾希试图通过“原型”和“原型继承”的概念,在 JavaScript 中实现面向对象编程 (OOP) 的设计原则。通过引入原型和原型继承,JavaScript 融合了函数式编程和面向对象编程两种编程范式的原则。

如同大多数重大变革一样,JavaScript 的出现起初也引发了争议,并且并不受欢迎,因为它与众不同。此前没有任何编程语言像 JavaScript 那样将面向对象编程 (OOP) 和函数式编程范式结合起来,也没有任何语言是专门为在浏览器中运行而设计的。

一些开发者对 JavaScript 缺乏结构性感到不满,主要是因为 JavaScript 代码既可以按照面向对象编程 (OOP) 原则编写,也可以按照函数式编程原则编写。虽然这种灵活性意味着 JavaScript 应用程序的格式和结构差异很大。此外,JavaScript 的弱类型系统、浏览器支持差异以及解释执行的特性,有时会导致 Web 应用程序在不同的浏览器上显示效果不同,并且通常比强类型应用程序更容易出现 bug。

尽管存在争议,但对 Web 应用程序的需求和使用量持续增长,JavaScript 也成为了 Web 开发的主要编程语言。凭借庞大的开发者群体和开源机制,该语言迅速得到整合和改进。1999 年发布的 ECMAScript 第三版(最初名为“LiveScript”,更早之前名为“Mocha”)进一步提升了其性能和功能集。

模糊桌面和网页体验的界限

2005 年,ES4(ECMAScript 版本 4)发布,其核心特性是AJAX。AJAX,即“异步 JavaScript 和 XML”,实现了函数/过程的异步执行。借助异步代码执行,Web 应用程序即使在执行耗时(即“高要求”)的操作时,也能保持对用户输入的响应。

随着各种项目、库和框架的出现,JavaScript 持续快速发展,使得构建 Web 应用程序比以往任何时候都更加快捷方便。像jQuery这样的库构建于 JavaScript 之上,通过提供用于常用操作的实用辅助函数来缩短开发时间,同时对这些操作进行抽象,从而确保无论客户端使用何种浏览器,最终结果都保持一致。

2009 年,ES5(ECMAScript 5)发布,随后在 2015 年发布了 ES6。每个版本都带来了浏览器兼容性的提升、性能的增强,以及更多易于执行常用函数和编写更易读、更直观代码的特性。随着 ES6(正式名称为“ES2015”)的发布,新的语法和更精细的作用域控制在很大程度上缩小了 JavaScript 在功能集方面与传统语言的差距。

JavaScript 今日

JavaScript 允许开发采用面向对象编程 (OOP) 或函数式编程原则的 Web 应用程序,因此仍然是创建 Web 应用程序的主要途径。JavaScript 仍然是一种灵活、现代且功能强大的编程语言,适用于各种类型的应用程序,并且是当今开发人员最常用的编程语言。

参考

文章来源:https://dev.to/jasonnordheim/how-javascript-came-to-dominate-web-development-3nom