En mi express
aplicación NodeJS , tengo app.js
algunas rutas comunes. Luego, en un wf.js
archivo, me gustaría definir algunas rutas más.
¿Cómo puedo llegar app.js
a reconocer otros controladores de ruta definidos en el wf.js
archivo?
Un simple requerimiento no parece funcionar.
Respuestas:
Si desea colocar las rutas en un archivo separado , por ejemplo
routes.js
, puede crear elroutes.js
archivo de esta manera:Y luego puede requerir que
app.js
pase elapp
objeto de esta manera:Mira también estos ejemplos
fuente
A pesar de que esta es una pregunta anterior, tropecé aquí buscando una solución a un problema similar. Después de probar algunas de las soluciones aquí, terminé yendo en una dirección diferente y pensé en agregar mi solución para cualquier otra persona que termine aquí.
En express 4.x puede obtener una instancia del objeto enrutador e importar otro archivo que contenga más rutas. Incluso puede hacer esto de forma recursiva para que sus rutas importen otras rutas, lo que le permite crear rutas de URL fáciles de mantener. Por ejemplo, si ya tengo un archivo de ruta separado para mi punto final '/ tests' y quiero agregar un nuevo conjunto de rutas para '/ tests / automatic', es posible que desee dividir estas rutas '/ automatizadas' en otro archivo para mantener mi archivo '/ test' pequeño y fácil de administrar. También le permite agrupar rutas lógicamente por ruta URL, lo que puede ser realmente conveniente.
Contenido de ./app.js:
Contenido de ./routes/tests.js
Contenido de ./routes/testRoutes/automated.js:
fuente
Partiendo del ejemplo de @ShadowCloud pude incluir dinámicamente todas las rutas en un subdirectorio.
routes / index.js
Luego, coloca los archivos de ruta en el directorio de rutas de esta manera:
rutas / test1.js
Repitiendo eso tantas veces como lo necesitaba y luego finalmente en app.js colocando
fuente
Y construya aún más sobre la respuesta anterior, esta versión de routes / index.js ignorará cualquier archivo que no termine en .js (y en sí mismo)
fuente
.DS_Store
archivos y estaba arruinando todo.Enrutamiento recursivo completo de todos los
.js
archivos dentro de la/routes
carpeta, colóqueloapp.js
.en
/routes
ponerwhatevername.js
e inicializar sus rutas de esta manera:fuente
Estoy tratando de actualizar esta respuesta con "express": "^ 4.16.3". Esta respuesta es similar a ShortRound1911.
server.js
/src/routes/index.js
/src/routes/siswa_route.js
Espero que esto pueda ayudar a alguien. ¡Feliz codificación!
fuente
Si está utilizando express-4.x con TypeScript y ES6, esta sería la mejor plantilla para usar:
src/api/login.ts
src/app.ts
Mucho más limpio que usar
var
ymodule.exports
.fuente
Un ajuste a todas estas respuestas:
Simplemente use una expresión regular para filtrar mediante la prueba de cada archivo en la matriz. No es recursivo, pero filtrará las carpetas que no terminen en .js
fuente
Sé que esta es una vieja pregunta, pero estaba tratando de resolver algo así para mí y este es el lugar donde terminé, así que quería poner mi solución a un problema similar en caso de que alguien más tenga los mismos problemas que yo ' m teniendo. Hay un buen módulo de nodo llamado consign que hace muchas de las cosas del sistema de archivos que se ven aquí para usted (es decir, no hay cosas readdirSync). Por ejemplo:
Tengo una aplicación de API tranquila que estoy tratando de construir y quiero poner todas las solicitudes que van a '/ api / *' para autenticarme y quiero almacenar todas mis rutas que van en api en su propio directorio (vamos a llamarlo 'api'). En la parte principal de la aplicación:
Dentro del directorio de rutas, tengo un directorio llamado "api" y un archivo llamado api.js. En api.js, simplemente tengo:
Todo funcionó como se esperaba. Espero que esto ayude a alguien.
fuente
Si desea un archivo .js separado para organizar mejor sus rutas, simplemente cree una variable en el
app.js
archivo que apunte a su ubicación en el sistema de archivos:luego,
donde
.foo
se declara alguna función en suwf.js
archivo. p.ejfuente
wf.foo
, etc., ya que están fuera del alcance como con las otras soluciones presentadas? Me refiero al caso en el que normalmente accedería a variables / funciones compartidas en wf.foo si no estuviera separado de app.js.¡Escribí un pequeño complemento para hacer esto! me cansé de escribir el mismo código una y otra vez.
https://www.npmjs.com/package/js-file-req
Espero eso ayude.
fuente
Esta es posiblemente la pregunta / respuesta de desbordamiento de pila más impresionante que haya existido. Me encantan las soluciones de Sam / Brad anteriores. Pensé en intervenir con la versión asíncrona que implementé:
La estructura de mi directorio es un poco diferente. Normalmente defino rutas en app.js (en el directorio raíz del proyecto) haciendo
require
-ing'./routes'
. En consecuencia, me estoy saltando el cheque en contraindex.js
porque quiero incluir ese también.EDITAR: También puede poner esto en una función y llamarlo de forma recursiva (edité el ejemplo para mostrar esto) si desea anidar sus rutas en carpetas de profundidad arbitraria.
fuente
puede colocar todas las funciones de ruta en otros archivos (módulos) y vincularlo al archivo del servidor principal. en el archivo express principal, agregue una función que vinculará el módulo al servidor:
y llame a esa función para cada modelo de ruta:
en los archivos del módulo (por ejemplo, archivo login.js), defina las funciones como de costumbre:
y exportarlo con el método de solicitud como una clave y el valor es una matriz de objetos, cada uno con ruta y teclas de función.
fuente