为了发挥 JavaScript 的全部潜力,了解它的本质、历史及局限性是十分重要的。
本节为您讲解 JavaScript 和客户端脚本的起源。
Nombas 和 ScriptEase
大概在 1992 年,一家称作 Nombas 的公司开发了一种叫做 C 减减(C-minus-minus,简称 Cmm)的嵌入式脚本语言。Cmm 背后的理念很简单:一个足够强大可以替代宏操作(macro)的脚本语言,同时保持与 C (和 C ++)足够的相似性,以便开发人员能很快学会。这个脚本语言捆绑在一个叫做 CEnvi 的共享软件中,它首次向开发人员展示了这种语言的威力。
Nombas 最终把 Cmm 的名字改成了 ScriptEase,原因是后面的部分(mm)听起来过于消极,同时字母 C “令人害怕”。
现在 ScriptEase 已经成为了 Nombas 产品背后的主要驱动力。
Netscape 发明了 JavaScript
当 Netscape Navigator 崭露头角时,Nombas 开发了一个可以嵌入网页中的 CEnvi 的版本。这些早期的试验被称为 Espresso Page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端语言。而 Nombas 丝毫没有料到它的理念将会成为万维网的一块重要基石。
当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。此时,大部分因特网用户还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次地往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写一个必要的字段。那时正处于技术革新最前沿的 Netscape,开始认真考虑开发一种客户端脚本语言来解决简单的处理问题。
当时工作于 Netscape 的 Brendan Eich,开始着手为即将在 1995 年发行的 Netscape Navigator 2.0 开发一个称之为 LiveScript 的脚本语言,当时的目的是在浏览器和服务器(本来要叫它 LiveWire)端使用它。Netscape 与 Sun 及时完成 LiveScript 实现。就在 Netscape Navigator 2.0 即将正式发布前,Netscape 将其更名为 JavaScript,目的是为了利用 Java 这个因特网时髦词汇。Netscape 的赌注最终得到回报,JavaScript 从此变成了因特网的必备组件。
三足鼎立
因为 JavaScript 1.0 如此成功,Netscape 在 Netscape Navigator 3.0 中发布了 1.1 版。恰巧那个时候,微软决定进军浏览器,发布了 IE 3.0 并搭载了一个 JavaScript 的克隆版,叫做 JScript(这样命名是为了避免与 Netscape 潜在的许可纠纷)。微软步入 Web 浏览器领域的这重要一步虽然令其声名狼藉,但也成为 JavaScript 语言发展过程中的重要一步。
在微软进入后,有 3 种不同的 JavaScript 版本同时存在:Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript 以及 CEnvi 中的 ScriptEase。与 C 和其他编程语言不同的是,JavaScript 并没有一个标准来统一其语法或特性,而这 3 种不同的版本恰恰突出了这个问题。随着业界担心的增加,这个语言的标准化显然已经势在必行。
标准化
1997 年,JavaScript 1.1 作为一个草案提交给欧洲计算机制造商协会(ECMA)。第 39 技术委员会(TC39)被委派来“标准化一个通用、跨平台、中立于厂商的脚本语言的语法和语义”(http://www.ecma-international.org/memento/TC39.htm)。由来自 Netscape、Sun、微软、Borland 和其他一些对脚本编程感兴趣的公司的程序员组成的 TC39 锤炼出了 ECMA-262,该标准定义了名为 ECMAScript 的全新脚本语言。
在接下来的几年里,国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。
相关推荐
IT互联网发展历程 IT互联网发展历程全文共11页,当前为第1页。 行业发展历程 1、UI的定义。 2、web的定义。 3、PHP的定义。 IT互联网发展历程全文共11页,当前为第2页。 UI的定义 UI设计师简称UID(User Interface ...
从源码的角度看vue的成长历程
1.3 web应用的发展历程 3 1.3.1 cgi 4 1.3.2 applet 4 1.3.3 javascript 5 1.3.4 servlet、asp和php……哦,太多了! 6 1.3.5 flash 9 1.3.6 dhtml革命 10 1.3.7 xml衍生语言 10 1.3.8 基本问题 12 1.3.9 ...
发展历程 History Master是用v2.0.0之前的纯JavaScript编写的,您可以在检查此版本。 之后,对 + + + 了大量重写,该文件位于。 由于它是用cljs编写的,因此需要来开发此扩展。 要获得最终发行版本,请运行脚本,...
发展历程 该应用程序的目标是能够执行以下操作: 让新用户注册并在后端创建哈希密码 让现有用户登录并生成新的随机令牌 让用户能够使用所需的身份验证令牌添加新的支出/购买 让用户能够使用必需的身份验证令牌查看...
玩游戏: : 发展历程克隆此存储库运行npm install在本地运行游戏npm run dev这将运行服务器,因此您可以在浏览器中运行游戏。 打开浏览器,然后在地址栏中输入localhost:3000 。 同样,这将启动监视过程,因此您...
发展历程 > git clone https://github.com/nighostchris/data-visualization-ideas.git > cd data-visualization-ideas > npm install > npm run dev 断面 樱花期分析 首先选择您想要的分区 然后将创建服务器图表 ...
发展历程请参阅项目Wiki上的“页面。发布说明(针对维护人员) 更新manifest/common.json的版本号进行提交并将消息设置为以下版本: git commit -m "v0.15.2" 用版本标记提交,并添加一条消息,描述自上次发行以来的...
api密钥-931abc2f197b56ef2fd113e5d91582df api调用-http: id=524901& ={API密钥}发展历程构建天气仪表板-在浏览器中运行,并使用HTML和CSS动态更新OpenWeather API-检索城市的天气数据 带有城市输入的天气仪表板 ...
有史以来第一个网站重构非凡已有30年的历史了,现在我们更加了解了,让我们更新第一个网站以反映正确的做事方式。 一个笑话发展历程我们首先使用create-react-app创建我们的应用create-react-app : npx create-...
Hyperapp One Hyperapp One是一个Parcel样板,...发展历程 访问 。 保存新代码时,浏览器将重新加载。 :rocket: 现在去编写一些很棒的代码! 抹掉提交历史 确保您位于样板的根目录中并运行: npm run wipe 添加您
对于谷歌而言,究竟要花费多长时间才能将Chrome发展为一款全能型的操作系统目前仍然不得而知。但是Netscape联合创始人安德里森(Marc Andreessen)在最近一次采访时曾表示,Chrome已经取得了长足的进步。他说:...
发展历程 测试 验证方式 :joystick_selector: 第二步:专业人士 :briefcase: 游戏设计师éo profissional queplaneja,创意无限,历史悠久; 设计师ééprofissional que cria a arte docenário,personagem e ...
发展历程 预安装 下一部分将详细说明使用不同的标记发行版从源安装Lisk Mobile的前提条件。 吉特brew install git NodeJS(建议8.14.0) brew install node npm(推荐5.3.0) npm随NodeJS一起提供。 但要安装特定...
每个网页可以比较已更改历史记录的编辑内容。 该项目是使用版本3.7.6。入门先决条件 :节点v9.3(首选yarn而npm ) ( npm install --global bower ) ,然后gem install sass ( npm install --global gulp ,或...
1.1 开放式网络的发展 1 1.1.1 通信处理层次化 2 1.1.2 OSI参考模型 3 1.1.3 模型的使用 5 1.2 TCP/IP参考模型 7 1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家...
1.1 开放式网络的发展 1 1.1.1 通信处理层次化 2 1.1.2 OSI参考模型 3 1.1.3 模型的使用 5 1.2 TCP/IP参考模型 7 1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家...
1.1 开放式网络的发展 1 1.1.1 通信处理层次化 2 1.1.2 OSI参考模型 3 1.1.3 模型的使用 5 1.2 TCP/IP参考模型 7 1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家...
1.1 开放式网络的发展 1 1.1.1 通信处理层次化 2 1.1.2 OSI参考模型 3 1.1.3 模型的使用 5 1.2 TCP/IP参考模型 7 1.3 小结 7 第2章 TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家...
:package: 后端查看备忘单PHPPythonJava脚本 :globe_with_meridians: 前端查看备忘单基本构架 :card_file_box_selector: 资料库查看备忘单SQL NoSQL :wrench: 工具类查看备忘单发展历程基础设施 :raising_hands_...