Estructura de directorios en proyectos laravel
Una de los aspectos más engorrosos de asimilar al iniciar con laravel es su estructura de directorios. Personalmente, cuando me inicié en laravel pensaba que la estructura de directorios podría ser algo exagerada, sin embargo, solo bastó con algunas semanas trabajando de lleno en el framework para entender que realmente el scaffolding de laravel está pensado tanto para proyectos grandes como pequeños. Muchos de los directorios son realmente necesarios en todo tipo de proyectos, la siguiente tabla muestra una descripción resumida de cada uno de ellos.
Directory | Meaning |
---|---|
/app | Contiene la lógica de la aplicación. En particular contienen los controladores y los modelos. |
/bootstrap | Contiene el archivo app.php que inicia la aplicación. |
/config | Contiene todos los archivos de configuración. |
/database | Contiene las migraciones de base de datos, factorias de modelos y seeders. |
/public | Contienen el archivo index.php el cuál es el punto de entrada para todas las peticiones. También contienen los assets como archivos CSS, JS, y demás. |
/resources | Contienen las vistas en plano, los assets descompiladados (LESS, SASS, ...) y los archivos de traducción a otros idiomas. |
/routes | Contiene la configuración de rutas de la aplicación (web.php, api.php, console.php, channels.php). |
/storage | Contiene los archivos blade compilados, archivos de sessión y otros generados por el framework. |
/storage/app | Este directorio puede ser utilizado para guardar archivos generados por la aplicación. |
/storage/app/public | Este directorio puede ser usado para guardar archivos generados por los usuarios de la aplicación y deberían ser de acceso público. |
/storage/framework | Contiene los archivos de cache generados por el framework. |
/storage/logs | Contiene los archivos de log de la aplicación. |
/tests | Contiene las pruebas automatizadas de la aplicación. |
Lo más importante de esto, es tener en cuenta que no hay que memorizarse completamente esta estrucutura de directorios por lo menos en un comienzo. A medida utilicemos el framework para una o utra aplicación será muy sencillo familiarizarse poco a poco con esta estructura.
Si observas con detenimiento, algunos directorios pueden plantear retos no previstos en el aprendizaje de laravel, para mí uno de estos retos fue aprender a utilizar procesadores de estilos como LESS o SASS, y entornos de ejecución de javascript como Node.Js. Estos archivos están alojados en el directorio resources y son compilados para generar un único archivo CSS o JAVASCRIPT con todas las dependencias necesarias para la ejecución de nuestro proyecto. Esto por una parte, reduce las llamadas al servidor cuando tenemos una cantidad de archivos javascript y CSS considerable, por otro lado, ayuda a manejar dependencias en lenguajes cliente. Otro reto podría ser aprender sobre generación de archivos de log con el estándar PSR-3.
El objetivo final de este post, es ilustrar de manera sencilla la estrucutra de directorios de un proyecto laravel e incentivar al desarrollador a que revise cada uno de estos directorios. Cuando se inicia en laravel sirve de mucho entrar por ejemplo a la carpeta /config y revisar cada uno de los archivos para detectar cómo está configurada la aplicación. Espero que os haya despejado algunas dudas con este post y que haya despertado al menos curiosidad con los nuevos conceptos que podrías aprender, hasta la próxima!.