En dépit de connaître JavaScript très bien, je suis confus quoi exactement ces trois projets dans Node.js écosystème. Est-il quelque chose comme de Rails pour Rack? Quelqu'un peut-il expliquer?
Réponses
Trop de publicités?[Mise à jour: Comme de sa version 4.0, Express n'utilise plus se Connecter. Toutefois, Express est toujours compatible avec le middleware écrit pour vous Connecter. Ma réponse est ci-dessous.]
Je suis heureux que vous ayez posé cette question, parce que c'est certainement un point commun de confusion pour les gens qui cherchent à Node.js. Voici mon meilleur coup à l'expliquer:
Node.js lui-même offre une http module, dont l'
createServer
méthode renvoie un objet que vous pouvez utiliser pour répondre à des requêtes HTTP. Cet objet hérite de l'http.Server
prototype.Connectez propose également un
createServer
méthode, qui renvoie un objet qui hérite d'une version étendue de l'http.Server
. Connecter les extensions sont principalement là pour le rendre facile à brancher dans le middleware. C'est pourquoi vous Connecter décrit lui-même comme un "middleware cadre", et est souvent assimilé à Ruby en Rack.Express n'Connecter ce que vous Connecter au module http: Il propose un
createServer
méthode qui s'étend ConnectServer
prototype. Donc toutes les fonctionnalités de se Connecter est là, plus le rendu de l'affichage et une pratique DSL pour la description d'itinéraires. Ruby Sinatra est une bonne analogie.Puis il y a d'autres cadres qui vont même plus loin et d'étendre Express! Zappa, par exemple, qui intègre le support de CoffeeScript, côté serveur jQuery, et les tests.
Voici un exemple concret de ce qui est signifié par "middleware": Hors de la boîte, rien de ce qui précède sert des fichiers statiques pour vous. Mais il suffit de jeter en connect.static
(un middleware qui vient avec Connect), configuré pour pointer vers un répertoire, et votre serveur de fournir l'accès aux fichiers dans ce répertoire. Notez que l'Express Connect middlewares aussi; express.static
est le même que connect.static
. (Les deux étaient connus comme staticProvider
jusqu'à récemment.)
Mon impression est que la plupart des "vrais" Node.js les applications sont développées avec l'Express de ces jours; les fonctions qu'il ajoute sont extrêmement utiles, et tous les bas-niveau de fonctionnalité est toujours là si vous le voulez.
L'on a accepté la réponse est très vieux (et maintenant de mal). Voici l'information (avec la source) basé sur la version actuelle de se Connecter (3.0) / Express (4.0).
Ce Node.js vient avec
http / https createServer
qui prend tout simplement un rappel(req,res), par exemple
var server = http.createServer(function (request, response) {
// respond
response.write('hello client!');
response.end();
});
server.listen(3000);
Ce connecter ajoute
Le Middleware est fondamentalement un logiciel qui se trouve entre le code de votre application et à faible niveau d'API. Se connecter s'étend le serveur HTTP intégré dans les fonctionnalités et ajoute un module plug-in. Les plugins agir en tant que middleware et donc la connexion est un middleware cadre
La façon dont il le fait est assez simple (et, en fait, le code est très court!). Dès que vous appelez var connect = require('connect'); var app = connect();
vous obtenez une fonction app
qui peut:
- Peut traiter une requête et renvoyer une réponse. C'est parce que vous obtiendrez de cette fonction
- A une fonction membre
.use
(source) pour gérer les plugins (qui vient d'ici, à cause de cette simple ligne de code).
Parce que de 1.) vous pouvez effectuer les opérations suivantes :
var app = connect();
// Register with http
http.createServer(app)
.listen(3000);
Combiner avec 2.) et vous obtenez:
var connect = require('connect');
// Create a connect dispatcher
var app = connect()
// register a middleware
.use(function (req, res, next) { next(); });
// Register with http
http.createServer(app)
.listen(3000);
Connect fournit une fonction d'utilité de s'inscrire avec http
, de sorte que vous n'avez pas besoin de faire l'appel à l' http.createServer(app)
. Elle s'appelle listen
et le code crée simplement un nouveau serveur http, inscrivez-vous connecter en tant que le rappel, et transmet les arguments d' http.listen
. À partir de la source
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Ainsi, vous pouvez le faire:
var connect = require('connect');
// Create a connect dispatcher and register with http
var app = connect()
.listen(3000);
console.log('server running on port 3000');
Il est toujours votre bon vieux http.createServer
avec un plugin cadre sur le dessus.
Ce ExpressJS ajoute
ExpressJS et connect sont des projets parallèles. Connect est juste un middleware cadre, avec une belle use
fonction. Express ne dépend pas de vous Connecter (voir emballage.json). Cependant, il n'est le tout qui se connectent ne je.e:
- Peuvent être enregistrés avec
createServer
comme connecter, car il trop tout simplement une fonction qui peut prendre unreq
/res
paire (source). - Une utilisation de la fonction de registre de middleware.
- Un utilitaire
listen
fonction pour enregistrer avec http
En plus de ce connect fournit (qui expriment les doublons), il a un tas de fonctionnalités en plus. par exemple
- A la vue de support moteur.
- A haut niveau les verbes (get/post, etc.) pour son routeur.
- A paramètres de l'application de soutien.
Le middleware est partagé
L' use
fonction de ExpressJS et connect est compatible et, par conséquent, le middleware est partagé. Les deux sont middleware cadres, exprimer un peu plus qu' un simple cadre middleware.
On devrait vous utiliser?
Mon avis. Vous êtes suffisamment informé ^basé sur la ci-dessus^ pour faire votre propre choix.
- Utiliser
http.createServer
si vous créez quelque chose comme se connecter / expressjs à partir de zéro. - L'utilisation de se connecter si vous êtes à la création du middleware, des protocoles d'essai etc. depuis, c'est une belle abstraction sur le dessus de l'
http.createServer
- Utilisation ExpressJS si vous êtes à la création de sites web.
La plupart des gens devraient juste utiliser ExpressJS.
Quel est le problème à propos de la accepté de répondre à
Ces peut-être vrai que certain point dans le temps, mais mal maintenant:
qui hérite d'une version étendue de http.Serveur
Mal. Il ne veut pas le prolonger et comme vous l'avez vu ... il utilise
Express n'Connecter ce que vous Connecter au module http
Express 4.0 n'est pas encore dépendent de vous connecter. voir le package courant.json à la section des dépendances
CELA VA EFFACER TOUS VOS DOUTES ET RÉPONDRE À BEAUCOUP PLUS DE QUESTIONS QUE VOUS AVEZ
Je comprends que c'est trop tard (j'espère que quelqu'un fait défiler vers le bas...), mais la lecture de la suite de l'article du blog sera clairement de toutes les questions que vous avez au sujet de se Connecter, d'Exprimer et de Middleware. Il vous apprend également un peu plus sur Node.js trop. http://evanhahn.com/understanding-express/
node.js
Node.js est un moteur javascript côté serveur.
En plus de tous les js capacités, il inclut des fonctionnalités de mise en réseau (HTTP), et l'accès au système de fichiers.
Ceci est différent de client-côté js où les tâches de mise en réseau sont monopolisés par le navigateur, et l'accès au système de fichiers est interdite pour des raisons de sécurité.
node.js en tant que serveur web: express
Quelque chose qui s'exécute sur le serveur, comprend HTTP et peut accéder à des fichiers sons comme un serveur web. Mais il n'en est pas une.
Pour faire node.js se comporter comme un serveur web a pour programme: gérer les requêtes HTTP entrantes et apporter les réponses appropriées.
C'est ce que l'Express n': c'est la mise en œuvre d'un serveur web en js.
Ainsi, la mise en œuvre d'un site web, c'est comme la configuration des voies Express, et la programmation du site.
Middleware et se Connecter
Pages servant implique un certain nombre de tâches. Beaucoup de ces tâches sont bien connus et très commun, alors le nœud de Connecter le module de (l'un des nombreux modules disponibles pour s'exécuter sous le nœud) met en œuvre ces tâches.
Voir les impressionner en offrant:
- enregistreur de demande logger avec support de format personnalisé
- csrf Cross-site request forgery de protection
- compresser compression Gzip middleware
- basicAuth authentification http de base
- bodyParser extensible du corps de la requête de l'analyseur
- json application/json analyseur
- urlencoded application/x-www-form-urlencoded analyseur
- multipart multipart/form-data analyseur
- délai d'attente demande de délais d'attente
- cookieParser cookie analyseur
- session session de soutien à la gestion groupés de MemoryStore
- cookieSession cookie de session sur le soutien
- methodOverride fausse méthode HTTP soutien
- responseTime calcule les temps de réponse et les expose, par l'intermédiaire de X-Temps de Réponse
- staticCache mémoire cache couche pour la statique() middleware
- statique streaming statique serveur de fichiers Gamme de support et plus
- annuaire inscription à l'annuaire middleware
- serveur virtuel virtual host sous-domaine de la cartographie middleware
- favicon efficace favicon serveur (avec l'icône par défaut)
- limite de limite de la bytesize de corps de la demande de
- la requête automatique de la chaîne de recherche de l'analyseur, le remplissage req.requête
- errorHandler flexible gestionnaire d'erreur
Connect est le cadre et à travers elle, vous pouvez choisir la (sous -) modules dont vous avez besoin.
La Contrib Middleware page énumère une longue liste d'autres middlewares.
Exprimer elle-même est livré avec la plupart des communes se Connecter middlewares.
Que faire?
Installer node.js.
Le nœud est livré avec npm, le nœud gestionnaire de paquets.
La commande npm install -g express
va télécharger et installer express à l'échelle mondiale (vérifier l' express guide).
L'exécution express foo
dans une ligne de commande (pas de nœud) permet de créer un prêt à exécuter, application nommée foo. Le changement de son (nouvellement créé) annuaire et de l'exécuter avec le noeud avec la commande node <appname>
, puis ouvrez http://localhost:3000
et à voir.
Maintenant, vous êtes dans.