带有 http.createServer 的服务器和在节点 js 中使用 express 的服务器之间的区别

Posted

技术标签:

【中文标题】带有 http.createServer 的服务器和在节点 js 中使用 express 的服务器之间的区别【英文标题】:Difference between a server with http.createServer and a server using express in node js 【发布时间】:2016-05-12 02:31:50 【问题描述】:

在 node js 中使用 http 模块创建服务器和使用 express 框架创建服务器有什么区别? 谢谢。

【问题讨论】:

您真正要问的是为什么要使用 Express 框架而不是仅使用 http 模块。基本上,您可以阅读有关 Express 框架的功能并决定其中任何一个是否对您有用。它是 http 模块的超集。 我其实是node新手。 Express.js - app.listen vs server.listen的可能重复 考虑到问题的公共利益,回答非常粗鲁 【参考方案1】:

最终,express 在幕后使用节点的http api。

表达框架

express 框架在 vanilla http 模块之上提供了一个抽象层,可以更轻松地处理 Web 流量和 API。还有大量的中间件可用于 express(和 express-like)框架来完成常见任务,例如:CORS、XSRF、POST 解析、cookie 等。

http 接口

http api 非常简单,用于设置和管理传入/传出、HTTP 连接。 Node 在这里完成了大部分繁重的工作,但它确实提供了您在大多数 Node Web 框架中通常会看到的东西,例如:request/response 对象等。

【讨论】:

【参考方案2】:

Express 在底层使用 http 模块,app.listen() 返回一个 http 实例。如果您需要使用 HTTPS 为您的应用程序提供服务,您可以使用 https.createServer,因为 app.listen 仅使用 http 模块。

这是app.listen 的source,因此您可以看到相似之处。:

app.listen = function()
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
;

【讨论】:

以上是关于带有 http.createServer 的服务器和在节点 js 中使用 express 的服务器之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Node.js http.createServer 简单服务配置

node.js createserver获取请求值

用 http.createServer 或 app = express() 调用 express 有啥区别?

NodeJS:http.createServer 和 express.createServer 之间的区别? [关闭]

http.createServer express.createServer有区别吗

Express 应用程序作为 http.createServer 的参数