tutorial node how node.js express server

node.js - node - Express.js-app.listen vs server.listen



require('' express '') in node js (5)

Esta puede ser una pregunta muy básica, pero simplemente no la entiendo. ¿Cuál es la diferencia entre crear una aplicación usando Express.js y comenzar a escuchar la aplicación en el puerto 1234, por ejemplo:

var express = require(''express''); var app = express(); //app.configure, app.use etc app.listen(1234);

y añadiendo un servidor http:

var express = require(''express''); var http = require(''http''); var app = express(); var server = http.createServer(app); //app.configure, app.use etc server.listen(1234);

¿Cual es la diferencia?
Si navego a http://localhost:1234 , obtengo el mismo resultado.


Express es básicamente un envoltorio del módulo http que se crea para la facilidad de los desarrolladores de tal manera que ...

  1. Pueden configurar middlewares para responder a solicitudes HTTP (fácilmente) usando Express.
  2. Pueden generar dinámicamente páginas HTML basadas en pasar argumentos a plantillas usando Express.
  3. También pueden definir enrutamiento fácilmente utilizando Express.

Hay una diferencia más entre el uso de la aplicación y escuchar el servidor http cuando desea configurar el servidor https.

Para configurar https, necesita el siguiente código:

var https = require(''https''); var server = https.createServer(app).listen(config.port, function() { console.log(''Https App started''); });

La aplicación de Express devolverá solo el servidor http, no puede configurarlo en express, por lo que deberá usar el comando del servidor https

var express = require(''express''); var app = express(); app.listen(1234);


La segunda forma (crear un servidor HTTP usted mismo, en lugar de hacer que Express cree uno por usted) es útil si desea reutilizar el servidor HTTP, por ejemplo, para ejecutar socket.io dentro de la misma instancia del servidor HTTP:

var express = require(''express''); var app = express(); var server = require(''http'').createServer(app); var io = require(''socket.io'').listen(server); ... server.listen(1234);

Sin embargo, app.listen() también devuelve la instancia del servidor HTTP, por lo que con un poco de reescritura puede lograr algo similar sin crear un servidor HTTP usted mismo:

var express = require(''express''); var app = express(); // app.use/routes/etc... var server = app.listen(3033); var io = require(''socket.io'').listen(server); io.sockets.on(''connection'', function (socket) { ... });


Sólo por propósito de puntualidad y extender un poco la respuesta de Tim.
De la documentación oficial :

La aplicación devuelta por express () es en realidad una función de JavaScript, DISEÑADA PARA SER PASADA a los servidores HTTP de Node como una devolución de llamada para manejar las solicitudes.

Esto facilita la provisión de las versiones HTTP y HTTPS de su aplicación con el mismo código base, ya que la aplicación no las hereda (es simplemente una devolución de llamada):

http.createServer(app).listen(80); https.createServer(options, app).listen(443);

El método app.listen () devuelve un objeto http.Server y (para HTTP) es un método conveniente para lo siguiente:

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


Vine con la misma pregunta pero después de Google, encontré que no hay una gran diferencia :)

De Github

Si desea crear un servidor HTTP y HTTPS, puede hacerlo con los módulos "http" y "https" como se muestra aquí.

/** * Listen for connections. * * A node `http.Server` is returned, with this * application (which is a `Function`) as its * callback. If you wish to create both an HTTP * and HTTPS server you may do so with the "http" * and "https" modules as shown here: * * var http = require(''http'') * , https = require(''https'') * , express = require(''express'') * , app = express(); * * http.createServer(app).listen(80); * https.createServer({ ... }, app).listen(443); * * @return {http.Server} * @api public */ app.listen = function(){ var server = http.createServer(this); return server.listen.apply(server, arguments); };

También si quieres trabajar con socket.io ve su example

Ver this

Prefiero app.listen() :)