Dans mon express
application NodeJS , j'ai app.js
quelques itinéraires communs. Puis dans unwf.js
fichier, je voudrais définir quelques itinéraires supplémentaires.
Comment puis-je app.js
reconnaître d'autres gestionnaires d'itinéraires définis dans le wf.js
fichier?
Un simple besoin ne semble pas fonctionner.
Réponses:
Si vous souhaitez placer les routes dans un fichier séparé , par exemple
routes.js
, vous pouvez créer leroutes.js
fichier de cette façon:Et puis vous pouvez l'exiger de
app.js
passer l'app
objet de cette façon:Jetez également un œil à ces exemples
la source
Même si c'est une question plus ancienne, je suis tombé ici à la recherche d'une solution à un problème similaire. Après avoir essayé certaines des solutions ici, j'ai fini par aller dans une direction différente et j'ai pensé ajouter ma solution à quiconque se retrouverait ici.
Dans express 4.x, vous pouvez obtenir une instance de l'objet routeur et importer un autre fichier contenant plus de routes. Vous pouvez même le faire de manière récursive afin que vos itinéraires importent d'autres itinéraires vous permettant de créer des chemins d'url faciles à entretenir. Par exemple, si j'ai déjà un fichier de route séparé pour mon point de terminaison '/ tests' et que je veux ajouter un nouvel ensemble de routes pour '/ tests / automatisé', je peux vouloir séparer ces routes '/ automatisées' dans un autre fichier pour garder mon fichier '/ test' petit et facile à gérer. Il vous permet également de regrouper logiquement les itinéraires par chemin URL, ce qui peut être très pratique.
Contenu de ./app.js:
Contenu de ./routes/tests.js
Contenu de ./routes/testRoutes/automated.js:
la source
En me basant sur l'exemple de @ShadowCloud, j'ai pu inclure dynamiquement toutes les routes dans un sous-répertoire.
routes / index.js
Ensuite, en plaçant les fichiers d'itinéraire dans le répertoire routes comme suit:
routes / test1.js
Répéter cela autant de fois que nécessaire, puis enfin dans app.js en plaçant
la source
Et construisez encore plus sur la réponse précédente, cette version de routes / index.js ignorera tous les fichiers ne se terminant pas par .js (et lui-même)
la source
.DS_Store
fichiers et ça gâchait tout.Routage récursif complet de tous les
.js
fichiers dans le/routes
dossier, mettez-leapp.js
.en
/routes
vous mettezwhatevername.js
et initialisez vos itinéraires comme ceci:la source
J'essaie de mettre à jour cette réponse avec "express": "^ 4.16.3". Cette réponse est similaire à ShortRound1911.
server.js
/src/routes/index.js
/src/routes/siswa_route.js
J'espère que cela peut aider quelqu'un. Bon codage!
la source
Si vous utilisez express-4.x avec TypeScript et ES6, ce serait le meilleur modèle à utiliser:
src/api/login.ts
src/app.ts
Beaucoup plus propre que l'utilisation de
var
etmodule.exports
.la source
Un ajustement à toutes ces réponses:
Utilisez simplement une expression rationnelle pour filtrer en testant chaque fichier du tableau. Ce n'est pas récursif, mais il filtrera les dossiers qui ne se terminent pas par .js
la source
Je sais que c'est une vieille question, mais j'essayais de comprendre quelque chose comme pour moi et c'est l'endroit où je me suis retrouvé, alors je voulais mettre ma solution à un problème similaire au cas où quelqu'un d'autre aurait les mêmes problèmes que moi '' m ayant. Il y a un joli module de nœud appelé consign qui fait beaucoup de choses sur le système de fichiers qui sont vues ici pour vous (c'est-à-dire - pas de choses readdirSync). Par exemple:
J'ai une application API reposante que j'essaie de créer et je veux mettre toutes les demandes qui vont dans '/ api / *' pour être authentifié et je veux stocker toutes mes routes qui vont en api dans leur propre répertoire (appelons-le simplement 'api'). Dans la partie principale de l'application:
À l'intérieur du répertoire des routes, j'ai un répertoire appelé "api" et un fichier appelé api.js. Dans api.js, j'ai simplement:
Tout a fonctionné comme prévu. J'espère que cela aide quelqu'un.
la source
Si vous voulez un fichier .js séparé pour mieux organiser vos itinéraires, créez simplement une variable dans le
app.js
fichier pointant vers son emplacement dans le système de fichiers:puis,
où
.foo
est une fonction déclarée dans votrewf.js
fichier. par exemplela source
wf.foo
, etc., car ils sont hors de portée comme avec les autres solutions présentées? Je fais référence au cas où normalement vous accéderiez à des variables / fonctions partagées dans wf.foo s'il n'était pas séparé de app.js.J'ai écrit un petit plugin pour faire ça! en a eu marre d'écrire le même code encore et encore.
https://www.npmjs.com/package/js-file-req
J'espère que ça aide.
la source
C'est probablement la question / réponse la plus impressionnante de débordement de pile jamais. J'adore les solutions de Sam / Brad ci - dessus. Je pensais que je jouerais avec la version asynchrone que j'ai implémentée:
Ma structure de répertoires est un peu différente. Je définis généralement les itinéraires dans app.js (dans le répertoire racine du projet) par
require
-ing'./routes'
. Par conséquent, je saute le chèqueindex.js
parce que je veux également l'inclure.EDIT: Vous pouvez également mettre ceci dans une fonction et l'appeler récursivement (j'ai édité l'exemple pour le montrer) si vous voulez imbriquer vos routes dans des dossiers de profondeur arbitraire.
la source
vous pouvez placer toutes les fonctions de routage dans d'autres fichiers (modules) et les lier au fichier serveur principal. dans le fichier express principal, ajoutez une fonction qui liera le module au serveur:
et appelez cette fonction pour chaque modèle d'itinéraire:
dans les fichiers du module (par exemple - fichier login.js), définissez les fonctions comme d'habitude:
et l'exporter avec la méthode de demande comme clé et la valeur est un tableau d'objets, chacun avec des touches de chemin et de fonction.
la source