目前,唯一完全受支持的语言以及浏览器中 DOM 树操作的事实上的标准是 JavaScript。看起来它有很深的设计问题,使其成为新手的错误和安全漏洞的雷区。
您是否知道任何现有的或计划的倡议来为下一代浏览器中的 DOM 树操作和 HTTP 请求引入一种更好的(重新设计的)语言(不仅仅是 javascript)?如果是,那么将其集成到 Firefox 中的路线图是什么,如果不是,出于什么原因(除了互操作性)JavaScript 应该是浏览器平台上唯一支持的语言?
我已经使用过 jQuery,并且还阅读了“javascript: the good parts”。确实这些建议很好,但我无法理解的是:为什么只有 javascript?在服务器端(您最喜欢的操作系统平台),我们可以使用每种语言操作 DOM 树,甚至是 fortran。为什么客户端(浏览器平台)只支持javascript?
最佳答案
javascript 的问题不在于语言本身——它是一种非常好的原型(prototype)和动态语言。如果您来自 OO 背景,则有一些学习曲线,但这不是语言的错。
大多数人认为 Javascript 类似于 Java,因为它具有相似的语法和相似的名称,但实际上它更像 lisp。它实际上非常适合 DOM 操作。
真正的问题是它是由浏览器编译的,这意味着它的工作方式因客户端而异。
实际的 DOM 不仅因浏览器而异,而且在性能和布局方面也存在巨大差异。
编辑以下有问题的澄清
假设支持多种解释语言——你仍然有同样的问题。各种浏览器仍然有问题并且有不同的 DOM。
此外,您必须在浏览器中内置一个解释器,或者以某种方式安装为每种语言的插件(您可以在提供页面之前对其进行检查)。使 Javascript 保持一致需要很长时间。
您不能以相同的方式使用编译语言 - 然后您将引入一个无法轻松检查其功能的可执行文件。许多用户会选择不让它运行。
好的,那么对于已编译代码的某种沙箱呢?对我来说听起来像 Java Applets。或 Flash 中的 ActionScript。或 Silverlight 中的 C#。
某种 IL 标准呢?那更有潜力。使用您想要的任何语言进行开发,然后将其编译为 IL,然后浏览器会进行 JIT。
除了,Javascript 已经是那种 IL - 看看 GWT .它允许您用 Java 编写程序,但将它们分发为 HTML 和 JS。
在有问题的进一步澄清后进行编辑
Javascript 不是,或者更确切地说,不是,浏览器支持的唯一语言:回到 Internet Explorer 的黑暗时代,您可以选择 Javascript 或 VBScript 在 IE 中运行。从技术上讲,IE 甚至没有运行 Javascript - 它运行了 JScript (主要是为了避免向 Sun 支付 java 这个词,Oracle 仍然拥有 Javascript 这个名称)。
问题是 VBScript 是 Microsoft 专有的,但也不是很好。虽然 Javascript 在其他浏览器(如 FireBug)中添加了功能并获得了顶级调试工具,但 VBScript 仍然仅限 IE 并且几乎不可调试(IE4/5/6 中的开发工具不存在)。同时 VBScript 也扩展成为操作系统中一个非常强大的脚本工具,但这些功能在浏览器中都不可用(当它们出现时,它们变成了巨大的安全漏洞)。
仍然有一些公司内部应用程序使用 VBScript(并且一些依赖于这些安全漏洞),并且它们仍在运行 IE7(它们只是停止了 IE6,因为 MS 最终将其杀死)。
让 Javascript 达到目前的状态一直是一场噩梦,花了 20 年的时间。它仍然没有一致的支持,一些浏览器仍然缺少语言功能(1999 年指定)并且需要大量的填充程序。
添加用于在浏览器中解释的替代语言面临两个主要问题:
应该注意的是,Javascript 并没有“完成”——它仍在不断发展,以便在新的浏览器中变得更好。 latest version比浏览器的实现早几年,他们正在研究下一个。
关于javascript - JavaScript 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/930716/