11
votes

Express.Router () vs. App.get

J'utilise Server Express 4 pour node.js

Il y a un routeur cuite au four en express comme: P>

in app.js p> blockQuote> xxx pré>

in userroutes.js: p> blockQuote> xxx pré>

mais je trouve qu'il est très difficile de trouver une documentation solide pour ce type de routeur en ligne. Il y a beaucoup plus de documentation pour l'ancien style d'utilisation app.get, app.post, app.Upt, app.delete, etc. L'une des choses plus confuses est que le premier argument (le chemin de route) semble exiger que Nous, en tant que programmeurs, citons l'APP.Utilisez l'argument des méthodes de routeur.get / post / Met / Supprimer. p>

Par exemple: p>

 var router = express.Router();

 router.get('/users/:user_id', function (req, res, next) {  //WRONG!!

    }

 router.get('/:user_id', function (req, res, next) {  //RIGHT

    }


3 commentaires

Lien vers EXPRESS API Documentation: expressjs.com/api.html


Merci mais ce n'est pas vraiment constructif. Par exemple, un problème avec Express.Router est que App.params ne semble pas fonctionner avec elle. Et il n'y a pas vraiment d'express.params ou de routeurs.params que je connais.


Selon ce Scotch.io/Tutorials/learn -à-user-the-new-routeur-in-expressjs -4 Il existe une fonctionnalité Router.params, mais tout cela n'est pas super clair comment utiliser express.Router () plusieurs fois ou même une fois Dans une application express


4 Réponses :


7
votes

Je pense réellement que c'est en fait la manière préférée. Vous définissez vos itinéraires séparément et utilisez-le simplement dans votre application. Il fournit une belle séparation des préoccupations. Cela fait également tester vos itinéraires assez faciles. Et oui, vous pouvez créer un backend solide reposant à l'aide d'Express.Router. En outre, il a tous les verbes HTTP de base comme Get, Post, Mettez, Supprimer, Patch, etc. attachés à celui-ci.


0 commentaires

13
votes

As Réponse de Bidhan Aux États, il est préférable de le faire avec Express et ressemble à cela depuis Express 4.

Vous pouvez compléter complètement votre code et votre logique.

Par exemple, vous pouvez avoir un fichier itinéraires / apirouter.js fichier avec ce code: xxx

aussi que vous pourriez avoir /controls/reportscontroller.js et enfin à votre fichier principal app.js ou également nommé serveur.js obtenez: xxx

Alors, répondant à votre Question:

  1. oui c'est préféré et une manière officielle de le faire.
  2. Oui, vous avez tout HTTP à contrôler en utilisant routeur et vous devez utiliser un autre modules à base express comme: Body-Parser , Error-Handler ou Cookie-Parser Pour Terminer ce contrôle .

    REMARQUE: Cela suppose que vous connaissez déjà une structure de répertoire générale générale préférée et effectuez des exportations de module.


0 commentaires

2
votes

express (). Obtenez fait la même chose que express.router (). Obtenez . La différence est que le routeur est une meilleure pratique car elle nous permet de gérer les points d'extrémité API en tant que middleware.

https://expressjs.com/fr/api.html#router

Le problème avec les cadres express et JS comme c'est que la documentation n'explique pas pourquoi le passage de l'utilisation de l'objet "app" express ". Je suppose que nous devrions séparer les préoccupations de la logique des itinéraires de la principale gestion des applications elle-même (c.-à-d. Configuration, modèle, connexion de base de données, etc.)


0 commentaires

1
votes

Grande question mais personne ne devrait avoir besoin de poser cette question.

La vérité est express est un excellent cadre. Mais j'ai vu tellement de questions sur la manipulation de la route que nous avons tous perdu du temps. Et même même lorsque cela est fait correctement, il ne s'agit que d'un tas de code qui a réellement gastiqué le temps des gens l'écrivant et encore plus dans des erreurs stupides correctes. P>

Essayez Itinéraire magique P>

Vous voulez faire seulement 2 lignes de code et que le module lit votre répertoire et votre structure de fichier pour gérer tous les App.Utilisez les invocations de routage, comme ceci: p>

app.use('/i/repeat/myself', require('./routes/i/repeat/myself'))
app.use('/i/repeat/myself/again', require('./routes//i/repeat/myself/again'))
app.use('/i/keep/repeating/myself', require('./routes/i/keep/repeating/myself'))


0 commentaires