Estructura inicial de Platzy Commerce con Vue
Clase 14 de 37 • Curso de Reactividad con Vue.js 3
Contenido del curso
Reactividad a profundidad
- 6

Paradigma reactivo: responsivo, resiliente y escalable
03:49 min - 7

Proxies: la clave de la reactividad Vue
06:29 min - 8

Creando tu primer mini framework reactivo
07:04 min - 9

Integrar Proxy para crear mini framework reactivo
06:06 min - 10

Refleja tu lógica mantenible con JavaScript
09:29 min - 11

Conceptos clave de reactividad: efectos, track y trigger
03:53 min - 12

Efectos trackers triggers: cómo Vue vincula datos
07:39 min
Templates de Vue.js
- 13
Templates de HTML en Vue.js: Mejores Prácticas Esenciales
00:21 min - 14

Estructura inicial de Platzy Commerce con Vue
Viendo ahora - 15

Expresiones JavaScript en templates Vue
06:49 min - 16

v-bind y clase reactiva en Vue.js
06:08 min - 17

v-show vs v-if en Vue: cuándo usar cada uno
08:53 min - 18

Directiva v-for para listas en Vue.js
08:14 min - 19

Eventos con v-on en templates de Vue
06:49 min
APIs internas de Vue.js
Segunda capa: componentes de Vue.js
- 25

Crear componentes reutilizables con Vue
06:56 min - 26

Cómo pasar datos de padre a hijo en Vue
14:13 min - 27
Creación de Componentes Personalizados en Aplicaciones Web
00:37 min - 28

Eventos personalizados en Vue: comunicar hijo a padre
04:27 min - 29

Eventos personalizados con Composition API
03:57 min - 30

Watchers en Vue Options API
08:53 min - 31

Watchers en Vue Composition API
08:19 min - 32

Computed properties vs watchers en Vue
05:17 min - 33

Computed en Vue Composition API
06:20 min - 34

Ciclos de vida en Vue: cuándo y cómo cargar datos
08:19 min - 35

Ciclos de vida en Composition API
06:03 min
Siguientes pasos
Construye una tienda con Vue.js desde la base: crea un template HTML estático, agrega contenido dinámico y monta la app con createApp. A partir de Platzy Commerce, verás reactividad, dos paradigmas de programación en Vue, consumo de API para imágenes y productos, y una interfaz con galería, carrito y mensajes dinámicos.
¿Cómo iniciar un proyecto Vue con HTML estático y contenido dinámico?
Para empezar, se crea una carpeta limpia con un archivo HTML y una estructura mínima. Dentro del body, se define el div de montaje para Vue, se incluye el script de Vue y un script propio con la lógica. Además, se enlaza el archivo de estilos de los recursos del curso: styles.css. La meta: partir de un template estático y volverlo reactivo paso a paso con Vue.
- Crear archivo HTML y definir estructura base.
- Agregar div de aplicación donde se montará Vue.
- Incluir script de Vue y un script propio.
- Enlazar estilos desde styles.css.
- Objetivo: pasar de HTML estático a contenido dinámico.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Platzy Commerce</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<div id="app"><!-- Aquí se montará Vue --></div>
<!-- Vue -->
<script src="..."></script>
<!-- Lógica de la app -->
<script>
const { createApp } = Vue;
const app = createApp({});
app.mount('#app');
</script>
</body>
</html>
¿Qué estructura tiene el layout de Platzy Commerce en Vue?
La interfaz se organiza en un header con el carrito y una sección principal del producto. Se plantea desde HTML para luego rellenar con datos de una API: imágenes, texto y estados del producto. La idea es que todo sea reactivo: el carrito, los mensajes y los badges cambian según la disponibilidad.
¿Qué elementos componen el header y el carrito?
- Título en H3: Platzy Commerce.
- Botón del carrito con clase: cart.
- Contador de elementos del carrito de forma reactiva.
- Contenedor: cart content con la lista de productos.
- Cada producto: imagen y descripción en un span.
<header>
<h3>Platzy Commerce</h3>
<button class="cart">Carrito</button>
<div class="cart-content">
<article class="cart-item">
<img src="..." alt="Producto" />
<span>Descripción del producto</span>
</article>
</div>
</header>
¿Cómo se organiza la sección principal del producto?
- Columna de thumbnails: imágenes pequeñas a la izquierda.
- Vista principal del producto: un div con la imagen destacada.
- Descripción del producto: título, badges e información.
- Badges dinámicos: por ejemplo, “nuevo” y “en oferta”.
- Estado del producto: clase definida, contenido por completar después.
- Precio: valor estático por ahora.
- Contenido descriptivo: lorem ipsum provisional.
- Código de descuento: etiqueta y campo con placeholder “Ingresa tu código”.
<main>
<section class="thumbnails">
<img src="..." alt="Miniatura 1" />
<img src="..." alt="Miniatura 2" />
</section>
<section class="product-view">
<div class="image"><img src="..." alt="Producto" /></div>
</section>
<section class="description">
<h2>Título del producto</h2>
<div class="badges">
<span class="badge new">Nuevo</span>
<span class="badge sale">En oferta</span>
</div>
<p class="status"></p>
<p class="description-price">$0</p>
<p class="description-content">Lorem ipsum...</p>
<label>
<span>Código de descuento</span>
<input type="text" placeholder="Ingresa tu código" />
</label>
</section>
</main>
¿Cómo montar la app con createApp y preparar estilos y scripts?
El montaje es directo: se importa el script de Vue, se extrae el método createApp, se asigna a una variable app y se llama a mount sobre el div de la aplicación. También se aseguran los estilos desde los recursos del curso, corrigiendo el enlace a styles.css.
- Extraer createApp desde Vue.
- Crear la instancia: const app = createApp({}).
- Montar en el selector del div de aplicación.
- Verificar que styles.css esté bien enlazado.
- Preparar datos para llegar desde una API: imágenes y detalles del producto.
- Mantener la reactividad para carrito, mensajes, colores, emojis y badges dinámicos.
const { createApp } = Vue;
const app = createApp({
// Aquí irá la lógica reactiva y los datos.
});
app.mount('#app');
¿Te gustaría ver primero el carrito reactivo, los thumbnails o los badges dinámicos? Deja tus dudas y comenta qué parte construirías a continuación.