同时使用 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 服务器,如果你要求它自己创建。因此,如果您需要使用特殊选项创建它,请自己创建一个。
我已经看到了节点快速服务器的以下设置:
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 服务器,如果你要求它自己创建。因此,如果您需要使用特殊选项创建它,请自己创建一个。