En este tema, exploraremos la instancia de Vue, que es el núcleo de cualquier aplicación Vue.js. La instancia de Vue es el objeto principal que controla la lógica y el comportamiento de nuestra aplicación. Comprender cómo funciona y cómo se configura es fundamental para desarrollar aplicaciones efectivas con Vue.js.
- Creación de una Instancia de Vue
Para crear una instancia de Vue, utilizamos el constructor Vue
. Aquí hay un ejemplo básico:
<!DOCTYPE html> <html> <head> <title>Instancia de Vue</title> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> </head> <body> <div id="app"> {{ message }} </div> <script> var app = new Vue({ el: '#app', data: { message: 'Hola, Vue!' } }); </script> </body> </html>
Explicación del Código
- Incluir Vue.js: Primero, incluimos la biblioteca Vue.js en nuestro HTML mediante un CDN.
- Elemento HTML: Creamos un
div
con el idapp
. Este será el contenedor de nuestra aplicación Vue. - Instancia de Vue: Creamos una nueva instancia de Vue y la asignamos a la variable
app
.el
: Especifica el elemento HTML que Vue debe controlar. En este caso, es eldiv
con el idapp
.data
: Define los datos que estarán disponibles en la instancia de Vue. Aquí, hemos definido un mensaje simple.
Cuando Vue se inicializa, reemplaza el contenido del div
con el id app
con el valor de message
, que es "Hola, Vue!".
- Propiedades y Métodos de la Instancia de Vue
La instancia de Vue tiene varias propiedades y métodos que podemos utilizar para controlar el comportamiento de nuestra aplicación.
Propiedades Comunes
el
: El elemento DOM que Vue está controlando.data
: Los datos que están disponibles en la instancia de Vue.methods
: Métodos que podemos definir para manejar eventos y lógica de la aplicación.computed
: Propiedades computadas que dependen de otras propiedades dedata
.watch
: Observadores que reaccionan a cambios en las propiedades dedata
.
Ejemplo con Métodos y Computed
<!DOCTYPE html> <html> <head> <title>Instancia de Vue</title> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> </head> <body> <div id="app"> <p>{{ message }}</p> <p>Mensaje en mayúsculas: {{ uppercaseMessage }}</p> <button @click="reverseMessage">Revertir Mensaje</button> </div> <script> var app = new Vue({ el: '#app', data: { message: 'Hola, Vue!' }, computed: { uppercaseMessage: function() { return this.message.toUpperCase(); } }, methods: { reverseMessage: function() { this.message = this.message.split('').reverse().join(''); } } }); </script> </body> </html>
Explicación del Código
computed
: Definimos una propiedad computadauppercaseMessage
que convierte el mensaje a mayúsculas.methods
: Definimos un métodoreverseMessage
que invierte el mensaje cuando se hace clic en el botón.
- Ciclo de Vida de la Instancia de Vue
Cada instancia de Vue pasa por una serie de etapas desde su creación hasta su destrucción. Estas etapas se conocen como el ciclo de vida de la instancia de Vue. Vue proporciona varios hooks de ciclo de vida que nos permiten ejecutar código en diferentes etapas del ciclo de vida.
Hooks de Ciclo de Vida
beforeCreate
: Se llama inmediatamente después de que la instancia ha sido inicializada, pero antes de que se hayan configurado las propiedades reactivas.created
: Se llama después de que la instancia ha sido creada. En este punto, las propiedades reactivas están configuradas.beforeMount
: Se llama antes de que la instancia sea montada en el DOM.mounted
: Se llama después de que la instancia ha sido montada en el DOM.beforeUpdate
: Se llama cuando los datos reactivamente vinculados están a punto de ser actualizados.updated
: Se llama después de que los datos reactivamente vinculados han sido actualizados.beforeDestroy
: Se llama antes de que la instancia sea destruida.destroyed
: Se llama después de que la instancia ha sido destruida.
Ejemplo con Hooks de Ciclo de Vida
<!DOCTYPE html> <html> <head> <title>Instancia de Vue</title> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> </head> <body> <div id="app"> {{ message }} </div> <script> var app = new Vue({ el: '#app', data: { message: 'Hola, Vue!' }, created: function() { console.log('Instancia creada'); }, mounted: function() { console.log('Instancia montada'); }, beforeDestroy: function() { console.log('Instancia a punto de ser destruida'); }, destroyed: function() { console.log('Instancia destruida'); } }); // Destruir la instancia después de 3 segundos setTimeout(function() { app.$destroy(); }, 3000); </script> </body> </html>
Explicación del Código
created
: Se ejecuta cuando la instancia de Vue ha sido creada.mounted
: Se ejecuta cuando la instancia de Vue ha sido montada en el DOM.beforeDestroy
: Se ejecuta justo antes de que la instancia de Vue sea destruida.destroyed
: Se ejecuta después de que la instancia de Vue ha sido destruida.
En este ejemplo, la instancia de Vue se destruye después de 3 segundos, y podemos ver los mensajes de los hooks de ciclo de vida en la consola.
Ejercicio Práctico
Ejercicio
- Crea una instancia de Vue que controle un
div
con el idapp
. - Define una propiedad
data
llamadacounter
con un valor inicial de 0. - Define un método
increment
que incremente el valor decounter
en 1. - Muestra el valor de
counter
en eldiv
. - Añade un botón que llame al método
increment
cuando se haga clic en él.
Solución
<!DOCTYPE html> <html> <head> <title>Ejercicio de Instancia de Vue</title> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> </head> <body> <div id="app"> <p>Contador: {{ counter }}</p> <button @click="increment">Incrementar</button> </div> <script> var app = new Vue({ el: '#app', data: { counter: 0 }, methods: { increment: function() { this.counter += 1; } } }); </script> </body> </html>
Explicación de la Solución
data
: Definimos una propiedadcounter
con un valor inicial de 0.methods
: Definimos un métodoincrement
que incrementa el valor decounter
en 1.@click
: Vinculamos el métodoincrement
al evento de clic del botón.
Conclusión
En esta lección, hemos aprendido sobre la instancia de Vue, cómo crearla y configurarla, y cómo utilizar sus propiedades y métodos. También hemos explorado el ciclo de vida de la instancia de Vue y cómo podemos aprovechar los hooks de ciclo de vida para ejecutar código en diferentes etapas. Con esta comprensión, estamos listos para profundizar en los conceptos básicos de Vue.js en el próximo módulo.
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)