Estructura Base de Componentes Web con HTML, CSS y JavaScript
Clase 19 de 22 • Curso de JavaScript: Web Components
Resumen
¿Cómo organizar la estructura básica de un componente web?
Al desarrollar un componente web, es fundamental estructurar bien tus carpetas y archivos desde el principio. Un diseño eficiente no solo ayuda al mantenimiento, sino que también facilita escalabilidad futura. Aquí te mostramos cómo se organiza una estructura base.
¿Qué archivos y carpetas necesitamos?
- Archivo HTML Principal: Comienza con un archivo
index.html
. - JavaScript Inicial: Crea
app.js
para manejar la lógica principal de tus componentes. - Carpeta de Componentes: Diseñada para almacenar los diferentes componentes de tu aplicación. Dentro de esta carpeta, coloca un archivo para cada componente, como
product-card.js
. - Carpeta de Imágenes: Es útil para gestionar todos los activos gráficos de forma ordenada.
- Estilos CSS: Por ahora, un solo archivo
styles.css
es suficiente, aunque podrías optar por una carpeta separada si el proyecto crece.
¿Cómo enlazamos los archivos en HTML?
Para vincular tu HTML con el archivo JavaScript, debes añadir un script correctamente configurado:
<script type="module" src="app.js"></script>
¿Cómo gestionamos los componentes?
Para una aplicación bien estructurada, importa componentes en tus archivos JavaScript en lugar de cargarlos directamente desde el HTML:
// En app.js
import './components/product-card.js';
¿Cómo se define un componente web en JavaScript?
Creación de la clase del componente
Define tu componente extendiendo de HTMLElement
y configura el shadow DOM para encapsular su estilo:
class ProductCard extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
}
}
customElements.define('product-card', ProductCard);
¿Cómo estructuramos el contenido del componente?
Crea un template HTML dentro de tu clase con el contenido del componente, teniendo en cuenta:
- La estructura debe ser modular, usando etiquetas como
main
,img
ydiv
. - Incluye un sistema de encabezados y etiquetas que faciliten la accesibilidad y SEO, como
h2
,h3
, yp
. - Adiciona elementos interactivos como botones para mejorar la experiencia del usuario.
getTemplate() {
const template = document.createElement('template');
template.innerHTML = `
<main>
<img src="" alt="Product Image">
<div>
<h2>Hello World</h2>
<p>Description goes here.</p>
<h3>$Price</h3>
<button>Buy Now</button>
</div>
</main>
`;
return template;
}
¿Cómo renderizamos el componente en el DOM?
Implementación del método render
Una vez definido el template, utiliza un método render
para clonar su contenido y añadirlo al shadow DOM:
render() {
this.shadowRoot.appendChild(this.getTemplate().content.cloneNode(true));
}
connectedCallback() {
this.render();
}
¿Cómo podemos hacer que el componente sea dinámico?
Por ahora, el componente es estático. En futuras etapas, implementaremos un sistema para pasar datos desde fuera del componente y renderizarlos dinámicamente. También integraremos estilos para asegurar que el componente sea visualmente atractivo y funcional.
Estos pasos sientan una base sólida para un componente web en un proyecto de eCommerce. Si deseas seguir profundizando, continúa explorando tus recursos educativos y aplicando lo aprendido de manera práctica. Mucho ánimo, ¡tu progreso está a la vuelta de la esquina!