11

服务器端 JavaScript (SSJS) 的 Netscape Enterprise Server 实现与 node.js 实现之间的主要区别是什么?

为什么 Netscape 的实现没有引起注意,而 node.js 似乎更受欢迎?

4

2 回答 2

20

早在 1999/2000 年,我曾在一家使用 Netscape Server 和 SSJS 的公司工作。我不知道当时它有多受欢迎,但从第一手经验来看,我可以告诉你几乎所有关于它的事情都很糟糕:

  • 调试非常痛苦(对源文件的任何更改,甚至是静态文件,都需要完全重新加载应用程序,这不是一个快速的操作)
  • 一个简单的错误(例如未捕获的异常)通常会导致灾难性的服务器故障。有点有趣的是,这是 NodeJS 的默认行为,尽管使用 Node.js 解决这个问题要容易得多。
  • 尽管语法是 JavaScript,但它未能实现现代 JavaScript 的一个关键优势:运行时解释。带有 Netscape Server 的服务器端 JS 需要在部署之前进行编译,因此开发过程非常缓慢。
  • 它遵循多线程执行模型(而不是几乎总是基于事件循环的现代 JS VM)
  • 可能它最大的弱点是缺乏异步编程支持。所有 IO 操作都是阻塞的,因此它需要一个重量级的多线程模型来支持多个客户端。执行模型更类似于 J2EE 容器,而不是现代事件驱动的 JavaScript VM(即:V8)。在我看来,这是 NodeJS 做对的第一件事:异步理念深深植根于 NodeJS 开发工作流程中,它是其轻量级、事件驱动、极其高效的并发模型的关键。

只是为了咯咯笑,这里是1.2 版SSJS 参考指南的链接。从第 21 页开始,您可以看到文件对象、数据库查询等的所有标准函数和同步 API...

此后不久,我的公司最终切换到 ColdFusion,并且再也没有回头。

于 2014-10-12T04:31:04.763 回答
3

主要区别在于过去 15 年多来 Javascript 的演变。Node.js 使用 V8 Javascript 引擎,该引擎将针对现代计算机进行更多优化。

Wikipedia很好地列出了各种服务器端 JS 解决方案之间的差异。

这是Netscape Enterprise Server的功能列表- 很好地了解了现代 SSJS 解决方案的改进之处。

为什么没有引起重视?实际上,客户端 JS 直到最近才开始成为 Web 开发的标准,所以当它的最初目的甚至没有真正被广泛采用时,任何人都不太可能考虑将它用于服务器端开发。我说被广泛采用是因为以前总是很难为所有浏览器提供 JavaScript 解决方案。

于 2013-08-21T07:15:32.397 回答