VueJS - Instancias

Para comenzar con VueJS, necesitamos crear la instancia de Vue, que se llama root Vue Instance.

Sintaxis

var app = new Vue({
   // options
})

Veamos un ejemplo para entender qué debe ser parte del constructor de Vue.

<html>
   <head>
      <title>VueJs Instance</title>
      <script type = "text/javascript" src = "js/vue.js"></script>
   </head>
   <body>
      <div id = "vue_det">
         <h1>Firstname : {{firstname}}</h1>
         <h1>Lastname : {{lastname}}</h1>
         <h1>{{mydetails()}}</h1>
      </div>
      <script type = "text/javascript" src = "js/vue_instance.js"></script>
   </body>
</html>

vue_instance.js

var  vm = new Vue({
   el: '#vue_det',
   data: {
      firstname : "Ria",
      lastname  : "Singh",
      address    : "Mumbai"
   },
   methods: {
      mydetails : function() {
         return "I am "+this.firstname +" "+ this.lastname;
      }
   }
})

Para Vue, hay un parámetro llamado el. Toma la identificación del elemento DOM. En el ejemplo anterior, tenemos el id#vue_det. Es el id del elemento div, que está presente en .html.

<div id = "vue_det"></div>

Ahora, cualquier cosa que vayamos a hacer afectará al elemento div y nada fuera de él.

A continuación, hemos definido el objeto de datos. Tiene valor nombre, apellido y dirección.

Lo mismo se asigna dentro del div. Por ejemplo,

<div id = "vue_det">
   <h1>Firstname : {{firstname}}</h1>
   <h1>Lastname : {{lastname}}</h1>
</div>

El valor de Firstname: {{firstname}} será reemplazado dentro de la interpolación, es decir, {{}} con el valor asignado en el objeto de datos, es decir, Ria. Lo mismo ocurre con el apellido.

A continuación, tenemos métodos en los que hemos definido una función mydetails y un valor de retorno. Se asigna dentro del div como

<h1>{{mydetails()}}</h1>

Por lo tanto, dentro de {{}} se llama a la función mydetails. El valor devuelto en la instancia de Vue se imprimirá dentro de {{}}. Verifique la salida como referencia.

Salida

Ahora, debemos pasar opciones al constructor de Vue, que son principalmente datos, plantilla, elemento para montar, métodos, devoluciones de llamada, etc.

Echemos un vistazo a las opciones que se pasarán al Vue.

#data- Este tipo de datos puede ser un objeto o una función. Vue convierte sus propiedades en getters / setters para hacerlo reactivo.

Echemos un vistazo a cómo se pasan los datos en las opciones.

Ejemplo

<html>
   <head>
      <title>VueJs Introduction</title>
      <script type = "text/javascript" src = "js/vue.js"></script>
   </head>
   <body>
      <script type = "text/javascript">
         var _obj = { fname: "Raj", lname: "Singh"}
         
         // direct instance creation
         var vm = new Vue({
            data: _obj
         });
         console.log(vm.fname);
         console.log(vm.$data);
         console.log(vm.$data.fname);
      </script>
   </body>
</html>

Salida

console.log(vm.fname); // imprime Raj

console.log(vm.$data); imprime el objeto completo como se muestra arriba

console.log(vm.$data.fname); // imprime Raj

Si hay un componente, el objeto de datos debe referirse desde una función como se muestra en el siguiente código.

<html>
   <head>
      <title>VueJs Introduction</title>
      <script type = "text/javascript" src = "js/vue.js"></script>
   </head>
   <body>
      <script type = "text/javascript">
         var _obj = { fname: "Raj", lname: "Singh"};
         
         // direct instance creation
         var vm = new Vue({
            data: _obj
         });
         console.log(vm.fname);
         console.log(vm.$data);
         console.log(vm.$data.fname);
         
         // must use function when in Vue.extend()
         var Component = Vue.extend({
            data: function () {
               return _obj
            }
         });
         var myComponentInstance = new Component();
         console.log(myComponentInstance.lname);
         console.log(myComponentInstance.$data);
      </script>
   </body>
</html>

En el caso de un componente, los datos son una función, que se usa con Vue.extend como se muestra arriba. Los datos son una función. Por ejemplo,

data: function () {
   return _obj
}

Para hacer referencia a los datos del componente, necesitamos crear una instancia del mismo. Por ejemplo,

var myComponentInstance = new Component();

Para obtener los detalles de los datos, debemos hacer lo mismo que hicimos con el componente principal anterior. Por ejemplo.

console.log(myComponentInstance.lname);
console.log(myComponentInstance.$data);

A continuación se muestran los detalles que se muestran en el navegador.

Props- El tipo de accesorios es una matriz de cadena u objeto. Toma una sintaxis basada en matrices o basada en objetos. Se dice que son atributos que se utilizan para aceptar datos del componente principal.

Ejemplo 1

Vue.component('props-demo-simple', {
   props: ['size', 'myMessage']
})

Ejemplo 2

Vue.component('props-demo-advanced', {
   props: {
      // just type check
      height: Number,
      
      // type check plus other validations
      age: {
         type: Number,
         default: 0,
         required: true,
         validator: function (value) {
            return value >= 0
         }
      }
   }
})

propsData - Se utiliza para pruebas unitarias.

Type- matriz de cadena. Por ejemplo, {[key: string]: any}. Debe pasarse durante la creación de la instancia de Vue.

Ejemplo

var Comp = Vue.extend({
   props: ['msg'],
   template: '<div>{{ msg }}</div>'
})
var vm = new Comp({
   propsData: {
      msg: 'hello'
   }
})

Computed- Tipo: {[clave: cadena]: Función | {get: Function, set: Function}}

Ejemplo

<html>
   <head>
      <title>VueJs Introduction</title>
      <script type = "text/javascript" src = "js/vue.js"></script>
   </head>
   <body>
      <script type = "text/javascript">
         var vm = new Vue({
            data: { a: 2 },
            computed: {
            
               // get only, just need a function
               aSum: function () {
                  return this.a + 2;
               },
               
               // both get and set
               aSquare: {
                  get: function () {
                     return this.a*this.a;
                  },
                  set: function (v) {
                     this.a = v*2;
                  }
               }
            }
         })
         console.log(vm.aSquare);  // -> 4
         vm.aSquare = 3;
         console.log(vm.a);       // -> 6
         console.log(vm.aSum); // -> 8
      </script>
   </body>
</html>

Computado tiene dos funciones aSum y aSquare.

La función aSum acaba de regresar this.a+2. Función aSquare de nuevo dos funcionesget y set.

La variable vm es una instancia de Vue y llama aSquare y aSum. También vm.aSquare = 3 llama a la función set desde aSquare y vm.aSquare llama a la función get. Podemos comprobar la salida en el navegador que se parece a la siguiente captura de pantalla.

Methods- Los métodos deben incluirse con la instancia de Vue como se muestra en el siguiente código. Podemos acceder a la función usando el objeto Vue.

<html>
   <head>
      <title>VueJs Introduction</title>
      <script type = "text/javascript" src = "js/vue.js"></script>
   </head>
   <body>
      <script type = "text/javascript">
         var vm = new Vue({
            data: { a: 5 },
            methods: {
               asquare: function () {
                  this.a *= this.a;
               }
            }
         })
         vm.asquare();
         console.log(vm.a); // 25
      </script>
   </body>
</html>

Los métodos son parte del constructor de Vue. Hagamos una llamada al método usando el objeto Vuevm.asquare (), El valor de la propiedad a se actualiza en el asquarefunción. El valor de a se cambia de 1 a 25, y lo mismo se ve reflejado en la siguiente consola del navegador.