我们可以说node.js是一个Web服务器?

我发现我在Web框架和Web服务器之间混淆。

Apache is a web server.

Tornado is a web server written in Python.

Nginx is a web server written in C

Zend is a web framework in php

Flask/Bottle is a web framework in Python

RoR is a web framework written in Ruby

Express is a web framework written in JS under Node.JS

我们可以说node.js是一个Web服务器? 我很困惑Web服务器/框架之间。

如果不知怎的,node.js是一种web服务器,而不是webframework(Express),为什么我们需要把整个node.js放在Nginx服务器的顶端? 关于SO的问题

谁可以帮忙?

套件

networking服务器

Web服务器可以指可以帮助提供可以通过互联网访问的内容的硬件(计算机)或软件(计算机应用程序)。 1

Web服务器的主要function是将请求中的网页发送给客户端。 这意味着交付HTML文档以及文档可能包含的任何其他内容,例如图像,样式表和脚本。

networking服务器是向互联网上的客户/用户提供请求/寻呼的基本

Web框架

Web应用程序框架是一个软件框架,旨在支持dynamic网站,Web应用程序和Web服务的开发。 该框架旨在减轻与Web开发中执行的常见活动相关的开销。 例如,许多框架为数据库访问,模板框架和会话pipe理提供了库,而且他们经常促进代码重用。

Web框架使用Web服务器将请求传递给客户端,但它不是Web服务器。

Node.js的

Node.js是基于Chrome的JavaScript运行时构build的平台,可以轻松构build快速,可扩展的networking应用程序。 Node.js使用事件驱动的非阻塞I / O模型,使其轻量且高效,非常适合跨分布式设备运行的数据密集型实时应用程序。

但是,你也可以创buildCLI应用程序,所以我觉得你应该把它看作是一个平台,用JavaScript 编程语言来编写运行在你的服务器(计算机)上的JavaScript 程序,而不是像刚才那样在浏览器中运行。 我想你可以把它看作Javascript++

您也可以使用node.js编写Web服务器,就像您在node.js的首页上看到的一样。 在开始的时候,Ryan说因为项目的稳定性,你可以把Nginx放在node.js前面。 这个项目现在还很年轻。 Nginx是一个经过validation的Web服务器,将继续运行,而node.js可能会崩溃。 然后,很多用户只是使用node.js。

我会说Node.js是一个运行时环境或运行时引擎。

可能迄今为止我所发现的最好的定义来自Rob Gravelle的一篇名为“Node.js入门”的文章 :

Node.js是用于使用服务器端JavaScript构buildnetworking应用程序的部分运行时环境和部件库。 它使用Chrome的JavaScript运行时引擎直接执行JS代码,而不需要浏览器沙箱。

此外,PCMAG.COM百科全书提供了“运行时引擎”的以下定义 :

某些应用程序依赖的软件在计算机上运行。 运行时引擎必须在计算机上运行才能执行应用程序。 它提供了应用程序所需的常用例程和函数,并且通常将处于临时中间语言的程序转换为机器语言。

另外维基百科的文章 “运行时系统”声明:

运行系统(也称为运行时系统,运行时环境或运行时)实现计算机语言的基本行为,无论该语言是编译语言,解释型语言,embedded式领域特定语言,还是通过API调用和pthreads一样。

…运行时系统可以实现任务的行为,例如在屏幕上绘制文本或build立Internet连接。 它也典型地作为一个抽象层,隐藏操作系统提供的服务的复杂性或变化。

那么,有没有像Node.js那样的运行时环境(甚至是软件平台)? 我想JRE就是这样一个环境的一个很好的例子。 Node.js和JRE – 它们有许多共同之处。 他们都有(一种)虚拟机,一个类库和一个框架来实现许多types的应用程序,包括CLI。

所以,回到你的问题,我们可以说Node.js是一个Web服务器? 让我们更改“JRE”的“Node.js”,并回答JRE是否是Web服务器。 答案是不。

我们只能说Node.js是一个运行环境,可以用来实现一个Web服务器。 那么,这是我的意见。

我将把node.js分类为一个服务器框架,提供可用的包作为HTTP服务器,WebSocket服务器或您自己的自定义协议等。

你可能把nginx放在你的node.js服务器之前的原因是为了HTTP负载平衡和在运行你的服务器应用程序的几台机器上反向代理。

说节点是一个web服务器就像是说javacript只能在浏览器里面运行,可以这样说,但是它也可以做很多其他的事情。

的NodeJS

  1. [Javascript运行环境(Chrome v8引擎)+节点库/ API]
  2. 可以创build一个Web服务器,也可以被描述为一个应用服务器

performance

  1. Web框架(使用nodejs的Web服务器来提供文件)

Nginx的

  1. networking服务器

在生产中,大多数人在节点服务器之前使用Nginx作为代理服务器来提供静态文件和其他各种元素,如caching,路由等。

Web服务器是通过Internet协议为客户提供服务的,Web Framework就是我们所说的编译器。 它由所有必需的库,语法规则等组成

而node.js是一个框架!