我熟悉ExpressJS和Flask等服务器技术。另一方面,我清楚地了解了CGI和Servlet的基本概念。 Flask / Django将CGI进一步扩展到WSGI并使用它。而且,Servlet在Java框架中是如此广泛地使用。现在,ExpressJS / NodeJS的底层是什么?我完全是盲人,我什至不知道这是否相关。
如果我的问题是白痴,请更正。我无法相互关联这些技术。
ExpressJS使用内置的nodejs http / https模块作为其http服务器。您的express实例本身就是http服务器。
它不像Apache或CGI那样工作,在其他地方有http服务器转发您某些请求,或者在CGI的情况下,它可能与其他应用程序甚至其他租户共享(在多租户环境中,当某些内容与您的URL匹配时,运行程序或脚本。
相反,您的express实例完全是一个http服务器。它接收自己的http请求,解析出所请求资源的路径以及所使用的http动词,然后对照您的各种Express定义的路由进行检查,以查看匹配的内容,以便可以调用与这些路由关联的回调。
因此,http服务器不是基于完全独立的东西,可以独立运行,并且可以配置为代表许多单独的应用程序执行许多操作,而在nodejs中,http服务器只是基于服务器的应用程序的组件可以使用。实际上,它可以在不同端口上具有多个http服务器,以用于不同目的,而这是同一段代码的所有部分。例如,可能有一个面向外部的https服务器,它在端口80上响应来自客户的传入请求,而在端口4000(通常称为控制端口)上可能有一个单独的http服务器,用于维护活动,例如日志记录设置或负载管理,诊断活动,例如访问内部保存的服务器统计信息等...