Desarrollando JuncoCMS, he llegado a un modelo arquitectónico simple que deseo poner en discusión. Antes, algunas consideraciones. No se trata sólo de generar páginas dinámicas, o de separar el modelo, del control o la vista. Sino de armonizar éstas y otras ideas, como ser, el desarrollo de extensiones independientes e intercambiables, o separar lo más posible el código según la tarea que ejecuta, entre otras.
De esta manera nos queda:
Recursos (servicios)
Esto es, lo que se puede consultar a través de una URL, y cuyo resultado es devuelto de manera dinámica, por ejemplo: páginas HTML, archivos JSON, feeds, etc.
|
admin/ |
De acceso solo para los administradores del sitio. |
|
front/ |
De acceso público. |
|
my/ |
Administración del usuario registrado. |
Núcleo
Acá se encuentra el código reutilizable, disponible a todas las extensiones. En teoría no debe ser modificado por el desarrollador, porque los cambios serán removidos en una futura actualización.
|
cms/libraries/ |
Lenguaje del lado del servidor, esto es, solo php. |
|
cms/scripts/ |
Lenguajes del lado del cliente y recursos. Solo no-php, es decir: css, javascript, imágenes, tipografías, pre-procesadores de hojas de estilos, etc. |
|
cms/plugins/ |
Son funciones encargadas de modificar el flujo de salida. Por lo general, son utilizadas para que la salida de una extensión sea enriquecida por el aporte de otras extensiones. |
|
cms/views/ |
Son clases que generan dinámicamente una porción de html, como ser: un formulario, una lista o un paginador. |
Media
Acá se guarda el contenido que va formando parte del sitio, como ser: las imágenes de los usuarios o la música o los documentos para descargar.
Storage
Acá se almacenan los datos que personalizan un sitio. Es decir, todo lo que es editable en el desarrollo.
|
storage/cache/ |
Todos los tipos de caché posibles. |
|
storage/locale/ |
Todas las traducciones. |
|
storage/logs/ |
Todos los archivos de logs que las extensiones implementen. |
|
storage/settings/ |
Las configuraciones. |
|
storage/updates/ |
Temporal de los paquetes de actualizaciones. |
Publicado originalmente en ArrollandoWeb el 5-oct-2017