FAQ
¿Cómo debería estructurar mi aplicación?
No hay una respuesta definitiva a esta pregunta. La respuesta depende de la escala de tu aplicación y del equipo involucrado. Para ser lo más flexible posible, Express no hace suposiciones en cuanto a la estructura.
Las rutas y otra lógica específica de la aplicación pueden estar en tantos archivos como desees, en cualquier estructura de directorios que prefieras. Revisa los siguientes ejemplos para inspirarte:
Además, existen extensiones de terceros para Express que simplifican algunos de estos patrones:
¿Cómo defino los modelos?
Express no tiene el concepto de base de datos. Este concepto se deja a módulos de Node de terceros, lo que te permite interactuar con casi cualquier base de datos.
Consulta LoopBack para ver un framework basado en Express centrado en los modelos.
¿Cómo puedo autenticar a los usuarios?
La autenticación es otra área con opiniones encontradas en la que Express no se adentra. Puedes usar cualquier esquema de autenticación que desees. Para un esquema simple de usuario / contraseña, consulta este ejemplo.
¿Qué motores de plantillas soporta Express?
Express soporta cualquier motor de plantillas que cumpla con la firma (path, locals, callback).
Para normalizar las interfaces y el caché de los motores de plantillas, consulta el
proyecto consolidate.js
para soporte. Los motores de plantillas no listados podrían soportar la firma de Express.
Para más información, consulta Uso de motores de plantillas con Express.
¿Cómo manejo las respuestas 404?
En Express, las respuestas 404 no son el resultado de un error, por lo que el middleware de manejo de errores no las capturará. Este comportamiento se debe a que una respuesta 404 simplemente indica la ausencia de trabajo adicional que hacer; en otras palabras, Express ha ejecutado todas las funciones de middleware y rutas, y ha encontrado que ninguna respondió. Todo lo que necesitas hacer es añadir una función de middleware en la parte más baja de la pila (debajo de todas las demás funciones) para manejar una respuesta 404:
app.use((req, res, next) => { res.status(404).send("Sorry can't find that!");});Añade rutas dinámicamente en tiempo de ejecución en una instancia de express.Router()
para que las rutas no sean reemplazadas por una función de middleware.
¿Cómo configuro un manejador de errores?
Defines el middleware de manejo de errores de la misma manera que otro middleware,
pero con cuatro argumentos en lugar de tres; específicamente con la firma (err, req, res, next):
app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Something broke!');});Para más información, consulta Manejo de errores.
¿Cómo renderizo HTML plano?
¡No es necesario! No hay necesidad de "renderizar" HTML con la función res.render().
Si tienes un archivo específico, usa la función res.sendFile().
Si estás sirviendo muchos recursos desde un directorio, usa la función de
middleware express.static().
¿Qué versión de Node.js requiere Express?
- Express 4.x requiere Node.js 0.10 o superior.
- Express 5.x requiere Node.js 18 o superior.