C'est peut-être une question très fondamentale, mais je ne comprends tout simplement pas. Quelle est la différence entre créer une application à l'aide d' Express.js et démarrer l'écoute de l'application sur le port 1234, par exemple:
var express = require('express');
var app = express();
//app.configure, app.use etc
app.listen(1234);
et ajouter un serveur 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);
Quelle est la différence?
Si je navigue vers http://localhost:1234
, j'obtiens donc la même sortie.
Réponses:
Le deuxième formulaire (création d'un serveur HTTP vous-même, au lieu de demander à Express d'en créer un pour vous) est utile si vous souhaitez réutiliser le serveur HTTP, par exemple pour l'exécuter
socket.io
dans la même instance de serveur HTTP:Cependant,
app.listen()
renvoie également l'instance de serveur HTTP, donc avec un peu de réécriture, vous pouvez obtenir quelque chose de similaire sans créer de serveur HTTP vous-même:la source
===
comparaison littérale échouerait;) Si vous ne me croyez pas, il y a toujours la source .var socketio = require('socket.io')
sur la troisième ligne nécessaire dans votre réécriture?app.listen()
car il nécessite moins de code. Étant donné qu'il ne s'agit que d'une couche très mince au-dessusserver.listen()
et qu'il renvoie l'instance de serveur, il n'y a généralement aucune raison de créer manuellement une instance de serveur HTTP distincte.Il y a une autre différence entre l'utilisation de l'application et l'écoute du serveur http lorsque vous souhaitez configurer le serveur https
Pour configurer https, vous avez besoin du code ci-dessous:
L'application d'express renverra uniquement le serveur http, vous ne pouvez pas le définir dans express, vous devrez donc utiliser la commande https server
la source
Juste à des fins de ponctualité et étendre un peu la réponse de Tim.
De la documentation officielle :
la source
express/lib/appplication.js
et rien de plus qu'un raccourci pour créer le serveur http du nœud.Je suis venu avec la même question mais après google, j'ai trouvé qu'il n'y avait pas de grande différence :)
Depuis Github
Si vous souhaitez créer un serveur HTTP et HTTPS, vous pouvez le faire avec les modules "http" et "https" comme indiqué ici.
Aussi, si vous voulez travailler avec socket.io voir leur exemple
Voir ça
Je préfère
app.listen()
:)la source
Express est essentiellement un wrapper de module http qui est créé pour la facilité des développeurs de telle manière que ..
la source