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

Kit*_* Ho 77 webserver web-frameworks node.js

我发现我在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的问题

谁可以帮忙???

套件

Alf*_*red 50

网络服务器

Web服务器可以指硬件(计算机)或软件(计算机应用程序),它们有助于提供可通过Internet访问的内容.1

Web服务器的主要功能是将请求的Web页面传递给客户端.这意味着传递HTML文档以及文档可能包含的任何其他内容,例如图像,样式表和脚本.

Web服务器是向Internet上的客户端/用户提供请求/页面的基础

Web框架

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

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

Node.js的

Node.js是一个基于Chrome JavaScript运行时的平台,可轻松构建快速,可扩展的网络应用程序.Node.js使用事件驱动的非阻塞I/O模型,使其轻量级和高效,非常适合在分布式设备上运行的数据密集型实时应用程序.

但是你又可以创建CLI应用程序,所以我认为你应该把它看作是一个平台来编写javascript程序,使用Javascript 编程语言在服务器(计算机)上运行,而不是像在开始时一样在浏览器中运行.我想你可以看到它Javascript++

你也可以用node.js编写带有node.js的web服务器,你可以在node.js的首页看到.起初Ryan说你可以把Nginx放在node.js前面,因为项目的稳定性.该项目过去并且还很年轻.Nginx是经过验证的Web服务器,它将继续运行,而node.js可能会崩溃.然后,很多用户只是使用node.js.

  • Node.js是基于**Google的V8 JavaScript引擎构建的JavaScript**运行时**... (5认同)

ezp*_*sso 20

我会说Node.js运行时环境或运行时引擎.

到目前为止,我发现的最佳定义可能来自Rob Gravelle的一篇题为"An Node to Node"的文章:

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

此外,PCMAG.COM Encyclopedia提供了"运行时引擎" 的以下定义:

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

另外,维基百科的文章,题为"运行时系统"的声明:

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

...运行时系统可以实现任务的行为,例如在屏幕上绘制文本或建立Internet连接.它通常还充当抽象层,隐藏操作系统提供的服务的复杂性或变化.

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

那么,回到你的问题,我们可以说Node.js是一个Web服务器吗?让我们为"JRE"更改"Node.js"并回答JRE是否为Web服务器.答案是不.

我们所能说的只是Node.js是一个可用于实现Web服务器的运行时环境.嗯,这是我的看法.


小智 15

说节点是一个网络服务器就像说javacript只能在浏览器内运行,你可以说但它也可以做很多其他事情.

的NodeJS

  1. [Javascript运行环境(Chrome v8引擎)+节点库/ API]
  2. 可以创建Web服务器,也可以称为Application服务器

表达

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

Nginx的

  1. 网络服务器

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

  • 加上一个提到 NodeJS 可以用于 web 服务器和应用程序服务器,以及提到 Express。 (3认同)

cmv*_*cmv 13

我将node.js归类为服务器框架,可用的包可以将其用作HTTP服务器,WebSocket服务器或您自己的自定义协议等.

您可以将nginx放在node.js服务器前面的原因是为了在运行服务器应用程序的多台机器上进行HTTP负载平衡和反向代理.


Tru*_*unk 8

我怎么能感觉到你的痛苦!

像许多人一样,我发现很难了解 Node.js 的本质,因为大多数人只写/谈论他们认为有用的 Node 部分——而他们认为有趣的部分通常是 Node 的次要好处,而不是它的主要好处目的。我必须说,我认为人们说 Node 只是一个 JavaScript 运行时是很疯狂的。Node 对 JavaScript 的使用 - 以及它对 V8 运行时的选择 - 只是为了达到目的,是 Node 开发人员想要解决的问题的最佳工具。

Node 的主要目的是使 Web 应用程序中的用户事件管理更加高效。所以节点是压倒性的在 Web 应用程序的后端使用。事件管理要求某些东西在服务器机器上侦听这些用户事件。因此,必须设置一个 http 服务器来将每个事件路由到其适当的处理程序脚本。Node 提供了一个框架,用于快速设置服务器以侦听用户请求的专用端口。Node 使用 JavaScript 进行事件处理,因为 JavaScript 具有回调函数:这允许暂停一项任务,直到返回依赖任务的结果。没有多少其他语言具有此功能,而且那些没有像 Google 的 V8 运行时那样高效的解释器。大多数 Web 开发人员都了解 JavaScript,因此无需使用 Node.js 进行额外的语言学习。更重要的是,有回调函数允许将所有用户任务放在单个线程上无需对需要访问数据库或文件系统的任务应用显式阻塞。这就是导致 Node 在大量并发使用下具有卓越执行效率的原因 - 这是其开发的主要目的。

为了帮助 Node 用户快速编写后端代码,Node 的开发人员还为日常任务(例如与 HTTP 请求、字符串(解码)编码、流等相关的事项)和 NPM(节点包管理器)存储库组织了一个内置的 JS 库:这是一组开源的、用户维护的脚本包,用于各种标准和自定义功能。所有 Node 项目都允许通过已建立的npm install 将NPM 包导入到项目中 命令。

通过 Node 处理的用户请求将是 Web 应用程序需要的东西,如身份验证、数据库查询、内容管理(Strapi CMS)等。所有这些都将发送到 Node 端口。(分析从数据库获得的数据需要大量 CPU 时间,这种类型的进程最好放在一个单独的线程上,这样就不会减慢简单的用户请求。)其他类型的用户请求,例如加载另一个网页、下载 CSS/JS/图像文件等,将继续由浏览器发送到服务器计算机上的默认端口,Web 服务器程序(Apache、NGinx 等)将在其中处理它们。

因此,在实践中,Node 主要是一个用于快速服务器创建和事件处理的框架,但它仅取代了一些了 Web 服务器程序的功能。

Node 的其他非后端用途只是利用其一项或多项功能,例如 V8 引擎。例如,前端构建工具 Grunt 和 Gulp 使用 Node.js 处理构建脚本,该脚本可以编码以将 SASS 转换为 CSS、缩小 CSS/JS 文件、优化图像大小/加载等。但这种工作确实是只是 Node 的副产品使用,而不是它的主要用途,即为 Web 应用程序制作高效的后端流程。