Introducción: fundamentos de Vue.js

1

Desarrollo de Aplicaciones Web con Vue.js 3

2

Fundamentos de Vue JS: Construyendo Aplicaciones Reactivas

3

Vue.js: Framework Progresivo y Reactivo para Aplicaciones Web

4

Aplicación Básica con JavaScript y Renderizado Declarativo

5

Capa Declarativa y Virtual DOM en Vue.js

Reactividad a profundidad

6

Paradigma de Reactividad: Conceptos y Aplicaciones Prácticas

7

Creación de Framework Reactivo con Proxies en JavaScript

8

Creación de un Mini Framework Reactivo desde Cero

9

Programación Reactiva con Proxies en JavaScript

10

Uso de Reflect para Simplificar Proxies en JavaScript

11

Programación Reactiva: Efectos, Track y Trigger en JavaScript

12

Reactividad en JavaScript: Efectos, Trackers y Triggers

Templates de Vue.js

13

Templates de HTML en Vue.js: Mejores Prácticas Esenciales

14

Implementación de Vue.js en Proyecto eCommerce Reactivo

15

Expresiones

16

Atributos Dinámicos en Vue.js: Uso de Clases y Estilos Reactivos

17

Rendering Condicional en View.js: Uso de v-show y v-if

18

Renderizado de Listas en HTML con VueJS

19

Eventos y Dinamismo en Templates HTML con Vue JS

APIs internas de Vue.js

20

Options API vs. Composition API

21

Diferencias entre Options API y Composition API en Vue.js

22

Creación de Métodos Personalizados con Vue JS Options API

23

Creación de Métodos Personalizados con Composition API en Vue.js

24

Uso de Reactive para Agrupar Estados en Composition API

Segunda capa: componentes de Vue.js

25

Creación de Componentes en Vue para Aplicaciones Modulares

26

Conexión de Datos entre Componentes en VueJS: Usando Props y Composition API

27

Creación de Componentes Personalizados en Aplicaciones Web

28

Creación de Eventos Personalizados en Vue para Comunicación entre Componentes

29

Eventos personalizados con Composition API en Vue.js

30

Observadores Personalizados con Watchers en Vue.js

31

Creación de Observadores Personalizados en Vue Composition API

32

Propiedades Computadas en Vue: Simplificación y Dinámica Reactiva

33

Propiedades Computadas con Composition API en Vue.js

34

Ciclos de Vida en Vue.js: Uso Práctico y Carga de Datos desde API

35

Ciclos de Vida en Composition API de Vue.js

Siguientes pasos

36

Desarrollo de Frontend para Ecommerce con Vue.js 3

37

Reactividad y Programación en Vue: Efectos y Ciclos de Vida

Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Capa Declarativa y Virtual DOM en Vue.js

5/37
Recursos

¿Qué es la capa de declarative rendering en Vue?

La capa de declarative rendering en Vue.js es un aspecto central que permite la conexión dinámica entre la información y la presentación en una aplicación. Al utilizar Vue, esta capa facilita la creación de aplicaciones interactivas, simplificando la integración de datos en HTML y optimizando el proceso de actualización del DOM. En esta guía, exploraremos cómo iniciar con Vue.js y cómo esta capa mejora el desarrollo de aplicaciones.

¿Cómo se instala Vue.js?

Para empezar a trabajar con Vue.js, dirígete a su página oficial Vue.js y sigue estos pasos:

  1. Guía de la última versión: Asegúrate de seleccionar la versión tres, que es la más reciente.
  2. Selección del método de instalación: Opta por el CDM (Content Delivery Manager) para agregarlo rápidamente a tu proyecto.
  3. Integración en el código: Una vez copiado el script, pégalo en tu aplicación.

Con estos pasos, Vue ya estará agregado a tu proyecto, listo para ser usado en el desarrollo de tu aplicación.

¿Cómo se crea una aplicación básica en Vue.js?

Para crear una aplicación básica en Vue.js, debemos utilizar la función createApp, que nos habilita una nueva instancia de aplicación. Vamos a verlo con el siguiente ejemplo de código:

const app = Vue.createApp({
  data() {
    return {
      message: 'Hola Vue'
    }
  }
});

app.mount('#app');

Explicación:

  • createApp: Esta función inicia una nueva aplicación Vue.
  • data: Es una función que retorna un objeto con la información que nuestra aplicación manejará. Aquí define el "message" con el valor inicial 'Hola Vue'.
  • mount: Indica en qué parte del HTML se debe montar la aplicación, en este caso en el elemento con id "app".

¿Cómo funciona el binding dinámico con directivas?

En Vue, el binding dinámico se logra a través de directivas. Estas son herramientas propias del framework que permiten conectar el DOM con los datos. Veamos cómo funciona:

<div id="app">
  <span v-text="message"></span>
  <input v-model="message">
</div>

Explicación:

  • v-text: Esta directiva se encarga de actualizar el texto interior del elemento (como <span>) con el contenido de la variable message.
  • v-model: Vincula el valor del input al dato message, permitiendo que cualquier cambio en el input actualice automáticamente message y viceversa.

¿Qué es el Virtual DOM y la reactividad en Vue?

Para captar cómo Vue actualiza la interfaz de usuario de manera eficiente, veamos dos conceptos esenciales: el Virtual DOM y la reactividad.

Virtual DOM

  • Definición: El Virtual DOM es una representación ligera del DOM real. Es un clon en forma de objeto JavaScript que Vue gestiona internamente.
  • Ventaja: Permite detectar cambios en los datos de la aplicación y actualizar solo las partes del DOM que han cambiado, lo que optimiza el rendimiento.

Reactividad

  • Definición: Es el sistema que detecta y responde a los cambios en los datos.
  • Cómo funciona: Vue observa los nodos en el Virtual DOM y actualiza automáticamente los elementos reactivos.

El Virtual DOM, junto con la reactividad, permite que las aplicaciones Vue sean rápidas y eficientes, reduciendo el esfuerzo del navegador al redibujar únicamente los componentes necesarios. Al aprender estos conceptos, optimizarás tus aplicaciones Vue y mejorarás significativamente el rendimiento y la experiencia del usuario.

Consejos prácticos para iniciarte en Vue

  • Familiarízate con la documentación oficial: Vue.js tiene una documentación detallada que es un recurso esencial para principiantes y expertos.
  • Experimenta con ejemplos sencillos: Antes de abordar proyectos complejos, realiza pequeñas aplicaciones para dominar los fundamentos.
  • Participa en la comunidad: Vue tiene una comunidad activa. Participar en foros y eventos puede proporcionarte un aprendizaje valioso y apoyo.

Con esta guía, te has familiarizado con los conceptos básicos del binding declarativo en Vue.js. Sigue explorando y practicando para sacar el máximo provecho de este potente framework.

Aportes 13

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Diferencias entre la instancia básica de Vue 2 y Vue 3

Veamos algunas diferencias en la instancia de Vue 2 con la de Vue 3 para que tengamos un mejor panorama de lo nuevo

Vue 2

new Vue({
	el: '#app',
   	data() {
       		message: "Hola vue"    
    	}
});

Vue 3

const app = createApp({
	data() {
		return {
			message: "Hola Vue"
		}
	}
});

app.mount("#app");

Como podemos ver, la principal diferencia esta en la instanciación, en Vue 2, creamos una nueva instancia usando la palabra reservada new seguido de Vue que recibe un objeto con algunas propiedades ya conocidas, para la versión 3 extraemos createApp para tener nuestra instancia. La segunda diferencia esta en el punto de montaje, es decir, donde nuestro contenido dinámico será renderizado, en la versión dos, teníamos la propiedad el en la que indicábamos el identificador de nuestro elemento contenedor, generalmente App, en ****la nueva versión tenemos que llamar mount y pasarle el identificador.

Declarative rendering con Vue.js

Una característica potente que posee Vue, y que tiene un impacto alto en su rendimiento y escalabilidad es su forma eficiente de actualizar el DOM a través del DOM Virtual. Esto sucede en el proceso de renderizado de nuestros componentes. Pero ¿qué rayos es DOM y DOM Virtual? Veamos que significa cada cosa. Cuando nos referimos a DOM o Modelo de objetos de documento nos referimos a una estructura de árbol, que contiene una serie de nodos, cada uno de estos nodos representa un elemento de nuestro HTML, un nodo puede tener nodos hijos. Imaginemos un blog, donde existen una serie de artículos, el contenedor de nuestro blog sera un node, y cada articulo representa un nodo hijo. El DOM tiene una serie de métodos que nos permiten acceder y cambiar el arbol completo o una parte de él, pero estos métodos tienen un gran problema y es que mientras mas grande es el DOM usarlos conlleva un mayor esfuerzo y esto afecta el rendimiento de nuestras aplicaciones. Por este motivo usamos el DOM Virtual que es una forma de representar nuestro DOM con objetos de Javascript, la razón de esto es que trabajar con objetos de javascript es mucho mas sencillo y eficiente. Por tanto, por cada nodo de nuestro DOM podemos crear un nodo virtual.

Vue aprovecha los nodos virtuales para convertirlos en un nodo del DOM. Vue esta pendiente de los cambios que ocurren en cada nodo, cuando ocurre un cambio verifica su nuevo estado con el anterior y decide si debe o no actualizar el DOM. Si se necesita actualizar el DOM, Vue solo actualiza los nodos que sufrieron cambios y el resto permanece intacto, esto es muy importante porque hace que nuestras aplicaciones reaccionen rápidamente y actualicen el contenido, ademas de esto Vue esta pendiente de aquellos nodos con propiedades reactivas.

RAYOS 😅
Aquí se elevó un poco el profesor.
¿Qué es v-text?
Dentro de la API de VueJS, es una directiva (porque empieza con v) que permite asignar texto a un nodo del DOM o textContent.

Aquí puede existir muchas confusiones porque ¿no lo hacía v-html? y el contexto es similar aunque éste trabaja con elementos HTML directamente o innerHTML

Ahora, hay que dejar claro que las declaraciones v-text son la compilación de la declaración {{ expression }}.

Virtual DOM: Es un objeto que crea Vue de JavaScript que contiene la estructura del DOM, gracias a esto Vue puede observar dicho objeto y renderizar únicamente lo que está cambiando (y no renderizar todo el DOM, así mejoramos el performance). Vue solo actualizará aquellos nodos del DOM que tienen una propiedad reactiva.
.
Por lo que veo, v-text es nuevo en Vue 3, aunque también se puede manejar entre llaves:

<span>{{ message }}</span>

Dejo mi código:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div id="app">

        <span>{{ message }}</span>
        <input type="text" v-model="message">
        
    </div>

    <script src="https://unpkg.com/vue@next"></script>
    <script>

        const { createApp } = Vue;

        const app = createApp({

            data() {
                return {
                    message: "Hola Vue"
                }
            },


        });

        app.mount("#app");

    </script>
    
</body>
</html>

El script que usa el profe para mayor agilidad
<script src=“https://unpkg.com/vue@next”></script>

Lo que no me gusta de este curso es que el código se ve super pequeño 😦

Para lograr la reactividad Vue cuenta con el Virtual DOM, que es una copia del DOM de la página pe transformado a un objeto de JS, ya que es mucho más fácil de observar y así conocer los cambios que ocurran.

Gracias al virtual DOM, Vue también reconoce cuales son las partes de HTML que están ligadas a un propiedad de Vue y solo a esas son a las que observa para actualizar en caso de que sea necesario.

Ojalá y en futuros cursos, le puedas dar zoom a tu editor de código, es un dolor de cabeza forzar la vista a cada rato para saber que dice.

Esta es la mejor explicacion que he escuchado respecto al DOM y Virtual DOM

DOM => estructura de arbol que representa un documento HTML
Virtual DOM => objeto de js que es creado por vue, es un clon del DOM. Sirve para estar pendiente de los cambios y actualizar cierta cantidad de info de manera dinamica y automatica sin tener que preocuparse por el performance, solo se renderiza lo que cambia.

Declarative rendering en Vue.js es un enfoque de programación donde describes el **qué** se debe mostrar en la interfaz de usuario en lugar del **cómo** hacerlo. En otras palabras, en lugar de escribir código detallado para manipular directamente el DOM (Document Object Model), defines el estado de los datos y la biblioteca de Vue.js se encarga de renderizar la interfaz de usuario de acuerdo con esos datos.

Codigo. de la clase

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="">
    </head>
    <body>
        <div id="app">
            <span v-text="message"></span>
            <br>
            <input type="text" v-model="message">
        </div>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>

 
        <script>
            const { createApp } = Vue;

            const app = createApp({
                data() {
                    return {
                        message: "Hola Vue!"
                    };
                }
            });
            app.mount("#app");
        </script>

    </body>
</html>  

Aqui una url del cdn de vue:
<script src=“https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js”></script>

Declarative Rendering en Vue

Para crear una aplicación de Vue, dentro de lo que es el objeto global de Vue, sacar una función createApp para crear una aplicación de VueJS. Para ello se creará una varia app que recibirá lo que retorne createApp, que recibirá un set de opciones diferentes, de las principales es data, que retorna un objeto que corresponde a toda la información de la aplicación.

    const { createApp } = Vue

    const app = createApp ({
      data() {
        return {
          message: "Hola Vue!"
        }
      }
    })

Lo siguiente es decirle a Vue que la aplicación será montada en algún elemento de HTML:

app.mount("#app")

Directiva v-text corresponde a Innertext.

<span v-text="message"></span>

Directiva v-model modifica el value del input.

<input type="text" v-model="message">

Virtual DOM

VueJS tiene el concepto del Virtual DOM que es un objeto, es un clone del DOM en sí mismo. Vue al copiarlo crea un objeto de JS, Vue puede observar los nodos de la aplicación y observando los cambios que están ocurriendo en cada momento. Gracias a ello Vue puede actualizar la información de manera dinámica, y automática en el browser, sin preocuparse por el performance.

Entonces el browser no se preocupa por renderizar toda la página, ya que solo renderiza lo que está cambiando. Vue lo que hace es comparar las propiedad del objeto de JS del Virtual DOM, entonces Vue se encarga de revisar si la información cambia y si esta debe de renderizarse en el navegador nuevamente. Vue solo actualizará a los nodos específicos dentro del DOM que tienen una propiedad reactiva/dinámica anidada a ellos.