Différence entre application.tous les('*') et app.utilisation('/')
Est-il une différence entre app.all('*', ... )
et app.use('/', ...)
dans Node.JS Express?
Vous devez vous connecter pour publier un commentaire.
Est-il une différence entre app.all('*', ... )
et app.use('/', ...)
dans Node.JS Express?
Vous devez vous connecter pour publier un commentaire.
Dans la plupart des cas, ils fonctionnent de manière équivalente. La plus grande différence est l'ordre dans lequel middleware serait appliquée:
app.all()
attache à l'application du routeur, il est utilisé chaque fois que l'application.routeur middleware est atteint (qui gère l'ensemble de la méthode des itinéraires... GET, POST, etc).app.use()
attache à l'application principale de la pile de middleware, de sorte qu'il est utilisé dans l'ordre spécifié par le middleware. par exemple, si vous mettez tout d'abord, il sera la première chose à exécuter. Si vous mettez en dernier (après le routeur), il ne sera pas s'exécuter du tout.Généralement, si vous voulez faire quelque chose à l'échelle mondiale pour tous les itinéraires, app.usage() est la meilleure option. Aussi, il a moins de chances d'avenir de bugs, depuis express 0.4 sera probablement tomber l'implicite routeur (c'est à dire la position du routeur dans le middleware sera d'autant plus importante qu'elle ne l'est maintenant, puisque vous techniquement n'avez même pas à l'utiliser dès maintenant).
next("route")
avecapp.all
, mais pas avecapp.use
.app.utilisation prend seulement une fonction de rappel et il est destiné pour le Middleware. Le Middleware n'est généralement pas gérer la demande et la réponse, (techniquement ils le peuvent) ils ont juste traiter les données d'entrée, et la main sur elle pour gestionnaire suivant dans la file d'attente.
app.tous les prend de multiples rappels, et signifiait pour le routage. avec plusieurs rappels, vous pouvez filtrer les demandes et envoyer des réponses. Ses expliqué dans Les filtres express.js
app.utilisation ne voit que si l'url commence par le chemin d'accès spécifié
app.tous les correspondra chemin d'accès complet
app.utilisation:
app.tous:
Regardez cette expressJs exemple de code:
Voici le journal lors de l'accès à l'itinéraire "/bonjour":
Avec
app.use()
, le "mont" chemin d'accès est supprimé et n'est pas visible pour le middleware de la fonction:Monté middleware fonctions(
express.static
) ne sont pas appelés à moins que lereq.url
contient ce préfixe (/static
), à quel point il est dépouillé lorsque la fonction est appelée.Avec
app.all()
, il n'y a pas ce comportement.Oui,
app.all()
qui est appelé lorsque un particulier URI est demandé à tout type de demande de la méthode (POST, GET, PUT ou DELETE)Sur l'autre main
app.use()
est utilisé pour toute middleware vous pourriez avoir, et il monte sur un préfixe de chemin, et sera appelé à chaque fois qu'une URI en vertu de cette route est demandé.Voici la documentation pour app.tous & app.utilisation.
Deux différences toutes les réponses ci-dessus n'est pas metion.
La première un:
app.all
accepte une regex comme son paramètre de chemin d'accès.app.use
ne PAS accepter une regex.La seconde:
app.all(path,handler)
ouapp[method](path,handler)
,gestionnaire dupath
doit être la même pour tout estpath
. C'est,app[méthode] chemin d'accès complet.app.use(path,hanlder)
,si l'utilisation du chemin d'accès est terminée,le hanlder du chemin d'accès doit être '/'.si l'utilisation du chemin d'accès est le début du chemin d'accès complet,le gestionnaire chemin d'accès doit être le reste du chemin d'accès complet.