同时使用 http-server 和 node express 服务器

Using both http-server and node express server

我已经看到了节点快速服务器的以下设置:

server.js

import { Server } from 'http'; 
import Express from 'express'; 

const app = new Express(); 
const server = new Server(app);

既然可以直接运行表达,那么这里将表达服务器作为http服务器的参数返回有什么好处?

Express 是 HTTP 服务器的请求处理程序。它需要一个 HTTP 服务器才能 运行。您可以自己创建一个,然后将 app 作为请求处理程序传递给它,或者 Express 可以创建它自己的 HTTP 服务器:

import Express from 'express'; 
const app = new Express();
app.listen(80);

但是,只是为了让您完全了解这里发生的事情。如果你使用app.listen(),它所做的就是这个(如the Express code所示):

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

它只是创建自己的 vanilla http 服务器,然后在其上调用 .listen()


如果您只是使用普通的 vanilla http 服务器,那么它会为您节省一些代码,让 Express 为您创建它,因此您自己创建它真的没有任何好处。如果,你想创建一个带有一些特殊选项或配置的服务器,或者如果你想创建一个 HTTPS 服务器,那么你必须自己创建一个,然后用 Express 请求处理程序配置它,因为 Express 只会创建一个普通的 vanilla http 服务器,如果你要求它自己创建。因此,如果您需要使用特殊选项创建它,请自己创建一个。