Introducción

Las directivas en Vue.js son atributos especiales que puedes agregar a tus elementos HTML para aplicar comportamientos reactivos. Vue.js proporciona varias directivas incorporadas que facilitan la manipulación del DOM de manera declarativa. En esta sección, exploraremos las directivas más comunes y cómo utilizarlas en tus aplicaciones Vue.

Directivas Comunes

v-bind

La directiva v-bind se utiliza para enlazar atributos de HTML a datos de Vue. Esto es útil para actualizar dinámicamente los atributos de los elementos en función del estado de la aplicación.

Sintaxis:

<a v-bind:href="url">Enlace</a>

Ejemplo:

<div id="app">
  <a v-bind:href="dynamicUrl">Enlace Dinámico</a>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      dynamicUrl: 'https://www.example.com'
    }
  });
</script>

v-model

La directiva v-model se utiliza para crear enlaces bidireccionales de datos en elementos de formulario. Esto significa que cualquier cambio en el elemento de formulario actualizará el estado de Vue y viceversa.

Sintaxis:

<input v-model="message">

Ejemplo:

<div id="app">
  <input v-model="message">
  <p>Mensaje: {{ message }}</p>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      message: ''
    }
  });
</script>

v-if

La directiva v-if se utiliza para renderizar condicionalmente un bloque de contenido. Si la expresión evaluada es verdadera, el bloque se renderiza; de lo contrario, se elimina del DOM.

Sintaxis:

<p v-if="seen">Ahora me ves</p>

Ejemplo:

<div id="app">
  <button v-on:click="toggleSeen">Toggle</button>
  <p v-if="seen">Ahora me ves</p>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      seen: true
    },
    methods: {
      toggleSeen() {
        this.seen = !this.seen;
      }
    }
  });
</script>

v-else y v-else-if

Las directivas v-else y v-else-if se utilizan junto con v-if para manejar múltiples condiciones.

Sintaxis:

<p v-if="type === 'A'">Tipo A</p>
<p v-else-if="type === 'B'">Tipo B</p>
<p v-else>Otro Tipo</p>

Ejemplo:

<div id="app">
  <button v-on:click="changeType">Cambiar Tipo</button>
  <p v-if="type === 'A'">Tipo A</p>
  <p v-else-if="type === 'B'">Tipo B</p>
  <p v-else>Otro Tipo</p>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      type: 'A'
    },
    methods: {
      changeType() {
        this.type = this.type === 'A' ? 'B' : 'C';
      }
    }
  });
</script>

v-for

La directiva v-for se utiliza para renderizar una lista de elementos utilizando los datos de un array.

Sintaxis:

<li v-for="item in items" :key="item.id">{{ item.text }}</li>

Ejemplo:

<div id="app">
  <ul>
    <li v-for="item in items" :key="item.id">{{ item.text }}</li>
  </ul>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      items: [
        { id: 1, text: 'Elemento 1' },
        { id: 2, text: 'Elemento 2' },
        { id: 3, text: 'Elemento 3' }
      ]
    }
  });
</script>

v-show

La directiva v-show se utiliza para mostrar u ocultar un elemento mediante la propiedad CSS display. A diferencia de v-if, v-show no elimina el elemento del DOM.

Sintaxis:

<p v-show="isVisible">Puedes verme</p>

Ejemplo:

<div id="app">
  <button v-on:click="toggleVisibility">Toggle</button>
  <p v-show="isVisible">Puedes verme</p>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      isVisible: true
    },
    methods: {
      toggleVisibility() {
        this.isVisible = !this.isVisible;
      }
    }
  });
</script>

v-on

La directiva v-on se utiliza para escuchar eventos de DOM y ejecutar métodos en respuesta a esos eventos.

Sintaxis:

<button v-on:click="doSomething">Haz algo</button>

Ejemplo:

<div id="app">
  <button v-on:click="showAlert">Mostrar Alerta</button>
</div>

<script>
  new Vue({
    el: '#app',
    methods: {
      showAlert() {
        alert('¡Hola, Vue.js!');
      }
    }
  });
</script>

Ejercicios Prácticos

Ejercicio 1: Enlace de Datos

Instrucciones:

  1. Crea una aplicación Vue que tenga un campo de entrada de texto.
  2. Usa v-model para enlazar el valor del campo de entrada a una propiedad de datos llamada inputText.
  3. Muestra el valor de inputText en un párrafo debajo del campo de entrada.

Solución:

<div id="app">
  <input v-model="inputText" placeholder="Escribe algo...">
  <p>Has escrito: {{ inputText }}</p>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      inputText: ''
    }
  });
</script>

Ejercicio 2: Renderizado Condicional

Instrucciones:

  1. Crea una aplicación Vue con un botón y un párrafo.
  2. Usa v-if para mostrar el párrafo solo cuando una propiedad de datos llamada isVisible sea verdadera.
  3. Usa v-on para alternar el valor de isVisible cuando se haga clic en el botón.

Solución:

<div id="app">
  <button v-on:click="toggleVisibility">Toggle</button>
  <p v-if="isVisible">Este párrafo es visible</p>
</div>

<script>
  new Vue({
    el: '#app',
    data: {
      isVisible: true
    },
    methods: {
      toggleVisibility() {
        this.isVisible = !this.isVisible;
      }
    }
  });
</script>

Conclusión

En esta sección, hemos explorado algunas de las directivas incorporadas más comunes en Vue.js, como v-bind, v-model, v-if, v-for, v-show y v-on. Estas directivas son herramientas poderosas que te permiten manipular el DOM de manera declarativa y reactiva. Asegúrate de practicar con los ejemplos y ejercicios proporcionados para consolidar tu comprensión de estas directivas. En la próxima sección, profundizaremos en las directivas personalizadas y cómo puedes crear tus propias directivas en Vue.js.

Curso de Vue.js

Módulo 1: Introducción a Vue.js

Módulo 2: Conceptos Básicos de Vue.js

Módulo 3: Componentes de Vue.js

Módulo 4: Vue Router

Módulo 5: Gestión de Estado con Vuex

Módulo 6: Directivas de Vue.js

Módulo 7: Plugins de Vue.js

Módulo 8: Pruebas en Vue.js

Módulo 9: Conceptos Avanzados de Vue.js

Módulo 10: Construcción y Despliegue de Aplicaciones Vue.js

Módulo 11: Proyectos Reales con Vue.js

© Copyright 2024. Todos los derechos reservados