В вашем первом примере я предполагаю, что app
представляет экземпляр Express из чего-то вроде этого:
const app = express();
Если это так, то app
- это функция обработчика запроса, которая также имеет свойства. Вы можете передать его так:
var server = http.createServer(app);
, потому что эта функция app
специально предназначена для прослушивания http-запроса, которому передаются аргументы (req, res)
из входящего http-запроса, как вы можете видеть здесь в do c.
Или, в Express, вы также можете сделать:
const server = app.listen(80);
В этом случае он будет выполнять http.createServer(app)
и затем также вызовите server.listen(port)
и верните новый экземпляр сервера.
Когда вы делаете это:
https.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World!');
res.end();
}).listen(port);
, вы просто создаете свою собственную функцию, которая предназначена для обработки входящий http-запрос вместо того, чтобы использовать тот, который библиотека Express делает для вас.