Introducción
La sintaxis de plantillas en Vue.js es una característica poderosa que permite a los desarrolladores crear interfaces de usuario dinámicas y reactivas de manera sencilla. En este tema, aprenderás cómo utilizar la sintaxis de plantillas para enlazar datos, manejar eventos y aplicar lógica condicional en tus aplicaciones Vue.
Contenido
- Interpolación de Datos
- Directivas de Vue
- Expresiones en Plantillas
- Atributos HTML y Clases
- Eventos
- Interpolación de Datos
La interpolación de datos es la forma más básica de enlazar datos en Vue.js. Utiliza la sintaxis de doble llave {{ }}
para mostrar datos dinámicos en el DOM.
<div id="app"> <p>{{ message }}</p> </div> <script> new Vue({ el: '#app', data: { message: 'Hola, Vue.js!' } }); </script>
Explicación:
{{ message }}
: Interpola el valor demessage
en el DOM.data: { message: 'Hola, Vue.js!' }
: Define el datomessage
en la instancia de Vue.
- Directivas de Vue
Las directivas son atributos especiales con el prefijo v-
que proporcionan funcionalidad adicional a los elementos del DOM.
v-bind
La directiva v-bind
se utiliza para enlazar atributos de HTML a datos de Vue.
<div id="app"> <a v-bind:href="url">Visita Vue.js</a> </div> <script> new Vue({ el: '#app', data: { url: 'https://vuejs.org' } }); </script>
Explicación:
v-bind:href="url"
: Enlaza el atributohref
del enlace al datourl
.
v-model
La directiva v-model
se utiliza para enlazar datos bidireccionalmente con elementos de formulario.
<div id="app"> <input v-model="message" placeholder="Escribe algo"> <p>{{ message }}</p> </div> <script> new Vue({ el: '#app', data: { message: '' } }); </script>
Explicación:
v-model="message"
: Enlaza el valor del input con el datomessage
.
- Expresiones en Plantillas
Las expresiones en plantillas permiten realizar operaciones simples dentro de la interpolación.
<div id="app"> <p>{{ number + 1 }}</p> <p>{{ isActive ? 'Activo' : 'Inactivo' }}</p> </div> <script> new Vue({ el: '#app', data: { number: 5, isActive: true } }); </script>
Explicación:
{{ number + 1 }}
: Realiza una operación aritmética.{{ isActive ? 'Activo' : 'Inactivo' }}
: Utiliza una expresión condicional.
- Atributos HTML y Clases
v-bind:class
La directiva v-bind:class
se utiliza para enlazar clases CSS dinámicamente.
<div id="app"> <div v-bind:class="{ active: isActive }">Contenido</div> </div> <script> new Vue({ el: '#app', data: { isActive: true } }); </script>
Explicación:
v-bind:class="{ active: isActive }"
: Añade la claseactive
siisActive
estrue
.
v-bind:style
La directiva v-bind:style
se utiliza para enlazar estilos en línea dinámicamente.
<div id="app"> <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">Texto Estilizado</div> </div> <script> new Vue({ el: '#app', data: { activeColor: 'red', fontSize: 14 } }); </script>
Explicación:
v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"
: Aplica estilos en línea basados en los datosactiveColor
yfontSize
.
- Eventos
v-on
La directiva v-on
se utiliza para manejar eventos del DOM.
<div id="app"> <button v-on:click="greet">Saludar</button> </div> <script> new Vue({ el: '#app', methods: { greet: function() { alert('Hola, Vue.js!'); } } }); </script>
Explicación:
v-on:click="greet"
: Asocia el eventoclick
del botón al métodogreet
.
Ejercicios Prácticos
Ejercicio 1: Interpolación de Datos
Instrucciones:
- Crea una instancia de Vue con un dato llamado
name
. - Muestra el valor de
name
en un párrafo utilizando la interpolación de datos.
Solución:
<div id="app"> <p>{{ name }}</p> </div> <script> new Vue({ el: '#app', data: { name: 'Juan' } }); </script>
Ejercicio 2: Enlazando Atributos
Instrucciones:
- Crea una instancia de Vue con un dato llamado
imageUrl
. - Enlaza el atributo
src
de una imagen al datoimageUrl
.
Solución:
<div id="app"> <img v-bind:src="imageUrl" alt="Imagen"> </div> <script> new Vue({ el: '#app', data: { imageUrl: 'https://via.placeholder.com/150' } }); </script>
Ejercicio 3: Manejo de Eventos
Instrucciones:
- Crea una instancia de Vue con un método llamado
showAlert
. - Asocia el evento
click
de un botón al métodoshowAlert
.
Solución:
<div id="app"> <button v-on:click="showAlert">Mostrar Alerta</button> </div> <script> new Vue({ el: '#app', methods: { showAlert: function() { alert('¡Alerta mostrada!'); } } }); </script>
Conclusión
En esta sección, has aprendido los conceptos básicos de la sintaxis de plantillas en Vue.js, incluyendo la interpolación de datos, el uso de directivas, expresiones en plantillas, y el manejo de eventos. Estos fundamentos te permitirán crear interfaces de usuario dinámicas y reactivas. En el próximo módulo, profundizaremos en la vinculación de datos y cómo aprovechar al máximo las capacidades reactivas de Vue.js.
Curso de Vue.js
Módulo 1: Introducción a Vue.js
- ¿Qué es Vue.js?
- Configuración del Entorno de Desarrollo
- Creando Tu Primera Aplicación Vue
- Entendiendo la Instancia de Vue
Módulo 2: Conceptos Básicos de Vue.js
- Sintaxis de Plantillas
- Vinculación de Datos
- Propiedades Computadas y Observadores
- Vinculación de Clases y Estilos
- Renderizado Condicional
- Renderizado de Listas
Módulo 3: Componentes de Vue.js
- Introducción a los Componentes
- Props y Eventos Personalizados
- Slots
- Componentes Dinámicos y Asíncronos
- Comunicación entre Componentes
Módulo 4: Vue Router
- Introducción a Vue Router
- Configuración de Vue Router
- Rutas Dinámicas
- Rutas Anidadas
- Guardias de Navegación
Módulo 5: Gestión de Estado con Vuex
- Introducción a Vuex
- Estado, Getters, Mutaciones y Acciones
- Módulos en Vuex
- Usando Vuex en Componentes
- Patrones Avanzados de Vuex
Módulo 6: Directivas de Vue.js
Módulo 7: Plugins de Vue.js
Módulo 8: Pruebas en Vue.js
- Pruebas Unitarias con Vue Test Utils
- Pruebas de Extremo a Extremo con Cypress
- Simulación de Dependencias
Módulo 9: Conceptos Avanzados de Vue.js
- Funciones de Renderizado y JSX
- Renderizado del Lado del Servidor (SSR) con Nuxt.js
- API de Composición de Vue 3
- Optimización del Rendimiento
Módulo 10: Construcción y Despliegue de Aplicaciones Vue.js
- Construcción para Producción
- Despliegue de Aplicaciones Vue.js
- Integración y Despliegue Continuos (CI/CD)