Node.js与Tomcat有何不同

22

我是新手学习Node,还在探索中,有一些疑问:

  1. 作为服务端框架,它与Tomcat有何不同之处?
  2. 如果我正在编写一些REST API,我是否可以将它们托管在Node服务器上,还是需要另一个服务器?
1个回答

60

回答你的第一个问题,Tomcat和Node是完全不同的实体,尽管如果你不关心将要使用的编程语言并且在其上添加了正确的东西,你可以让Node发挥与Tomcat相同的作用。

  • Tomcat是用Java编写的Web应用程序Web服务器
  • Node是JavaScript应用程序的运行时环境

因此,除了编程语言的差异外,你所做的比较实际上并不恰当。你看,Node(加上底层的V8引擎)更像JVM(Java虚拟机),而不是Tomcat。

你可以在Node上开发任何类型的应用程序。其中一部分将是服务器应用程序,然后其中的一部分将是Web服务器应用程序。

现在,也许在Node上最常用的Web服务器是Express。我真的不知道其他的了。我找到了Express就没有再寻找其他的了。

因此,为了比较,请这样考虑:

JVM vs. V8+Node
Java vs. Javascript
Tomcat vs. Express

关于您的第二个问题,是的,您可以在Node上构建REST API,只需添加Express即可。好消息是这非常简单。 看一下这个: http://expressjs.com/en/guide/routing.html

祝你好运,学习Node很有趣。我非常喜欢。离开Java后就再也没有回头了 ;)


1
谢谢Mig82。这是我到目前为止得到的最好的解释,它解决了我的疑惑。感谢您。 - Chandan Gupta
没问题@ChandanGupta。你认为你能把我的标记为答案吗?谢谢。 - Mig82
我有一个跟进问题,自从我学习Node以来一直在困扰着我。它说不要将其用于CPU密集型应用程序,但难道不是任何进程都在执行一些被认为是CPU密集型的操作吗? - Chad
17
Node是为Web而设计的,用于处理大量并发请求。它是事件驱动的,专注于异步/非阻塞操作,因为大多数Web应用程序都需要这样做。它不适用于“CPU密集型”代码。这意味着,如果你的代码执行大量内存计算,你可能会让主线程忙到无法响应事件循环中的事件。例如,像三维建模或图像分析这样复杂的重量级算法。与C++相比,Node在这些任务上的匹配度不如其他语言。我建议您了解一下Node的历史。 - Mig82
1
不确定我是否完全同意被接受的答案。 JVM ~ V8, JRE ~ Node, Spring Boot/微框架等 ~ Express,可能还要加入Tomcat,因为Tomcat支持JEE的子集。 - treefiddy
如果我没错的话,Tomcat不适用于Express。我同意@treefiddy的所有比较。 - luffy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接