Skip to content

Por: Ernesto Canquiz

Anidando Diseños de Temas

En esta sección trataremos los componentes que están en la carpeta .src/core/layouts/.

TIP

Tenga en cuenta que, por convención, la carpeta layouts/ puede denominarse themes/. Esta variación en la nomenclatura es cuestión de predilección y no afecta la funcionalidad. El nombramiento será por su preferencia o consensuada por el equipo de desarrollo.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

Haremos un ejemplo práctico con la carpeta que alberga el diseño del tema de nuestra aplicación.

A simple vista

Si desplegamos la carpeta .src/core/layouts/ y nos preguntamos:

¿Cuantos tipos de temas diseñados hay aquí?

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──Custom.vue
  ├──Default.vue
  ├──Emtpy.vue
  ├──Footer.vue
  ├──Header.vue
  ├──Navbar.vue
  └──Sidebar.vue
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

Luego de leer uno a uno los archivos que están en la carpeta .src/core/layouts/, semánticamente deducimos que son tres: Custom.vue, Default.vue y Emtpy.vue.

Además, no sabemos a simple vista cuáles de estos componentes principales importan los componentes secundarios Footer.vue, Header.vue, Navbar.vue y Sidebar.vue, respectivamente. A menos que editemos cada uno de los componentes principales.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──Custom.vue
  ├──Emtpy.vue
  └──Default.vue
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

¿A quién pertenecen los componentes hijos respectivamente?

Supongamos que todos los componentes hijos pertenecen a Default.vue.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──Custom.vue
  ├──Emtpy.vue
  └──Default/
     ├──Footer.vue
     ├──Header.vue
     ├──Index.vue
     ├──Navbar.vue
     └──Sidebar.vue
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

TIP

Tenga en cuenta que aquí, en el ejemplo, los componentes hijos Footer.vue, Header.vue, Navbar.vue y Sidebar.vue solo pueden ser hijos del componente padre Default/Index.vue.

Si lo desea, podemos ser más disciplinados.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──Custom.vue
  ├──Emtpy.vue
  └──Default/
     ├──components/
  ├──Footer.vue
  ├──Header.vue
  ├──Navbar.vue
  └──Sidebar.vue
     └──Index.vue
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

Entonces, se verá así.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──Custom.vue
  ├──Emtpy.vue
  └──Default/
     ├──components/
     └──Index.vue
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

Componentes Reutilizables

Los componentes hijos Footer.vue y Header.vue solo pueden ser reutilizados dentro de la carpeta ./src/core/layouts.

Por lo que no tiene sentido colocarlos dentro de la carpeta ./src/core/components.

Veamos un ejemplo.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──Footer.vue
  ├──Header.vue
  ├──Custom/
  ├──Navbar.vue
  ├──Sidebar.vue
  └──Index.vue
  ├──Emtpy.vue
  └──Default/
     ├──Navbar.vue
     ├──Sidebar.vue
     └──Index.vue
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

En el ejemplo anterior, suponga que los componentes hijos Footer.vue y Header.vue son reutilizados por los componentes padres Custom/Index.vue y Default/Index.vue respectivamente.

Sin embargo, cada uno posee sus componentes hijos Navbar.vue y Sidebar.vue que les corresponden.

TIP

Tenga en cuenta que no hay necesidad de agregar prefijos o sufijos a los respectivos componentes Navbar.vue y Sidebar.vue, ya que cada uno de ellos está ubicado dentro de la carpeta a la cual pertenece.

Si lo desea, podemos ser más disciplinados.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──components/
  ├──Footer.vue
  └──Header.vue
  ├──Custom/
  ├──components/
  ├──Navbar.vue
  └──Sidebar.vue
  └──Index.vue
  ├──Emtpy.vue
  └──Default/
     ├──components/
  ├──Navbar.vue
  └──Sidebar.vue
     └──Index.vue
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

Entonces, se verá así.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──components/
  ├──Footer.vue
  └──Header.vue
  ├──Custom/
  ├──components/
  └──Index.vue
  ├──Emtpy.vue
  └──Default/
     ├──components/
     └──Index.vue
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └──modules/

¡Genial! Ahora se ve más limpio.

sh
└──src/
   ├──core/
  ├──assets/
  ├──components/
  ├──composables/
  ├──layouts/
  ├──components/
  ├──Custom/
  ├──Emtpy.vue
  └──Default/
  ├──middleware/
  ├──router/
  ├──types/
  └──utils/
   └── modules/

TIP

Los componentes hijos que están dentro de la carpeta ./src/core/layouts/components/ solo pertenecen a los componentes padres de la carpeta ./src/core/layouts/.

No tiene sentido colocarlos lejos creando una carpeta ./src/core/components/layouts/ para ese propósito.