【问题标题】:what's the technical difference between express and http, and connect for that matterexpress 和 http 之间的技术区别是什么,并为此连接
【发布时间】:2014-09-28 21:03:30
【问题描述】:
var express = require("express")
  , app = express()
  , http = require("http").createServer(app)

我经常看到这些被放在依赖项上。从我的理解来看,http主机前端html?并且 express 拥有服务器端的 nodejs 逻辑? connect 是 express 的基础层,所以它也是服务器端的模块吗?

如果不是这样,为什么人们不这样做

express().listen(8080)

而不是

require("http").createServer(express()).listen(8080)

【问题讨论】:

    标签: javascript node.js http express


    【解决方案1】:

    我们通过一个例子来了解http模块和express模块的区别。

    例如,考虑http 模块是一辆汽车,即普通的商用车。

    另一方面,将express 视为超级汽车。

    请看,http 模块提供了各种工具(功能)来完成网络操作,例如制作servercilent 等。

    express 是建立在 http 模块之上的,具有一些更有用和更好的功能,例如处理routes 的简单方法,制作firmware, servers, client 的简单方法等。

    就像普通车和超级车(可能是豪华车)之间的区别。它们在一天结束时都是汽车,但功能更多的是豪华车,易于使用,就像express.js中一样

    Source

    【讨论】:

    • Express 是一个用于构建应用程序的 Web 服务器框架。这不是“超级汽车”与“汽车”,而是“汽车”与“引擎”。 HTTP 是引擎。它促进了连接和请求,就像汽车中的引擎促进运动一样。 Express 就像围绕着发动机的汽车一样,是使发动机发挥作用的原因。
    【解决方案2】:

    Expresshttp 之上的另一层。它负责处理 Web 应用程序所需的基本重复任务。 connect 是一个中间件,它也负责处理 Web 应用程序所需的基本重复任务。

    使用任何框架的整个想法都是保持干燥,不要重复自己。每个网络应用程序都非常需要解析请求正文解析 cookie 等任务。 Express默认提供它们。

    在 Express 4.x 中,大部分都被重构为几个细粒度的模块,如body-parsermorgan 等。无需使用 express 即可直接使用它们。 完整模块请参考Express - GitHub

    Expresshttp 之上的另一层,表示Express 内部使用http。换句话说,它是http 的包装器。如果你看Express的源码,你会发现它内部使用了http。请参阅突出显示的声明 https://github.com/strongloop/express/blob/master/lib/application.js#L540-543

    【讨论】:

    • 另外,在http之上的一层中表达是什么意思?
    • @user2167582 DRY 代表 Don't Repeat Yourself,如答案中所述。我将更新答案以解决您的第二个问题。
    猜你喜欢
    • 1970-01-01
    • 2015-10-04
    • 2015-03-09
    • 1970-01-01
    • 2018-11-08
    • 2013-03-22
    • 1970-01-01
    • 2012-05-05
    • 2011-07-01
    相关资源
    最近更新 更多