代码之家  ›  专栏  ›  技术社区  ›  g491

是什么让Express成为框架而不是web服务器?

  •  0
  • g491  · 技术社区  · 8 年前

    我惊讶地发现它被称为框架。在MEAN stack的首字母缩略词中,它取代了web服务器“(A)pache”和“(I)IS”(如LAMP、WISP等),这两个服务器都是web服务器,这并不是不将其称为框架的原因,但有人能清楚地解释为什么它属于框架阵营吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   jfriend00    8 年前

    首先, Express不是web服务器 。它没有自己的web服务器代码。 它可以创建标准节点。js公司 http 为您提供服务器(当您这样做时 app.listen() 或者您可以创建自己的 http协议 https 服务器并将其作为设置的一部分传递给Express。

    相反,它是一个“web服务器之上的框架”。它提供了一种通用机制,用于定义路由和中间件、错误处理程序和模板呈现器(以及其他内容)。

    有鉴于此,有很多NPM插件可以通过Express中间件或Express路由机制或呈现API(它们以标准方式插入框架)插入到web服务器。在我看来,这种通过标准机制插入的方法正是它成为一个框架的原因。

    所以,虽然Apache本身实际上是一个web服务器,但Express是一个运行在已经内置到节点中的web服务器之上的层。js。

    它当然不是一个通用的编程框架,而是一种非常特殊的web服务器框架。

    从维基百科的“软件框架”页面:

    在计算机编程中,软件框架是一种抽象,在这种抽象中,提供通用功能的软件可以通过其他用户编写的代码有选择地更改,从而提供特定于应用程序的软件。软件框架提供了构建和部署应用程序的标准方法。软件框架是一种通用的、可重用的软件环境,它提供特定功能,作为更大软件平台的一部分,以促进软件应用程序、产品和解决方案的开发

    根据此定义对Express进行评估,它将获得所有这些元素的复选标记:

    ✔  Abstraction providing generic functionality
    ✔  can be selectively changed by additional user-written code
    ✔  thus providing application-specific software
    ✔  A software framework provides a standard way to build and deploy applications
    ✔  A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions
    

    本例中的“应用程序”是一个节点。js web服务器。