Integración de VueX y Babel en PlatziMusic
Clase 44 de 53 • Curso Profesional de Vue.js 2
Contenido del curso
- 3

Herramientas esenciales para desarrollar con BioJS y NodeJS
06:13 - 4

Creación de una Aplicación Vue.js con CLI y Webpack Simple
12:50 - 5

Configuración y uso de Webpack en proyectos JavaScript
10:38 - 6

Configuración y uso de Babel para compatibilidad JavaScript
05:06 - 7

Configuración de eSlimt con EstándarJS y Webpack
15:34 - 8

Integración de SaaS y Bulma en Aplicaciones Vue.js
06:18 - 9

Configuración de Pag para optimizar el workflow de desarrollo HTML
04:23 - 10
Diseño de Mockups: Práctica y Colaboración en Comunidad
00:20 - 11
Creación de Vistas con Mockups y Vue.js
00:32
- 12

Expresiones en Vue: Manipulación Dinámica del DOM
03:49 - 13

Directivas de Vue: Uso y Funciones Principales
06:22 - 14

Data Binding y Directivas en Vue: bmodel y bevined
04:11 - 15

Propiedades Computadas en JavaScript: Creación y Uso Práctico
04:13 - 16

Uso de Watchers en Biomóvil para Gestión de Cambios de Propiedades
02:25 - 17

Manipulación de Eventos y Métodos en Aplicaciones Web
06:12 - 18

Creación de Interfaz con Vue.js y Framework CSS Bulma
19:03 - 19
Manipulación del DOM con Vue.js: Práctica y Ejercicios
03:00
- 23

Creación y Registro de Componentes en Vue.js
08:46 - 24

Creación de Componentes en Vue.js con Bulma para Platzi Music
09:50 - 25

Reactividad y Virtual DOM en Vue.js: Conceptos y Soluciones
06:14 - 26

Ciclo de Vida de Componentes en Vue.js: Hooks y Ejecución de Código
05:38 - 27

Comunicación entre Componentes en Vue.js: Props y Eventos
23:27 - 28

Comunicación entre Componentes en Vue: Eventos de Hijo a Padre
12:04 - 29

Uso de Slots para Inyección Dinámica de HTML en Componentes Vue
13:42 - 30

Comunicación entre Componentes Vue con Event Bus y Plugins
19:19
- 39

Gestión de Estados Centralizados con la Librería BuX
03:41 - 40

Integración de VueX y arquitectura Flux en Vue.js
17:32 - 41

Mutaciones en Vuex: Gestión y Actualización del Estado Reactivo
08:16 - 42

Uso de Getters en Vuex para Acceso Personalizado de Estado
07:35 - 43

Acciones asincrónicas en Vuex: cómo implementarlas y utilizarlas
07:55 - 44

Integración de VueX y Babel en PlatziMusic
26:37
¿Cómo integrar Vuex a nuestro proyecto?
Para llevar nuestro proyecto PlatziMusic al siguiente nivel, es fundamental integrar Vuex, una poderosa librería que facilita la gestión del estado de nuestras aplicaciones Vue. Esto nos permitirá centralizar y estructurar mejor la interacción entre componentes. Sigamos juntos este emocionante viaje a través de los pasos necesarios para implementar Vuex.
¿Cómo instalar las dependencias necesarias?
El primer paso es abrir la terminal para instalar los módulos faltantes. Necesitamos Vuex, esencial para el state management, y un preset de Babel para usar el Spread Operator. Ejecutamos el siguiente comando para instalar Vuex:
npm i -S vuex
Una vez instalado, configuramos el preset de Babel. Visitamos el sitio de Babel para copiar el nombre exacto del preset necesario, que es @babel/preset-stage-2. Instalamos este preset y lo integramos a nuestro archivo .babelrc de la siguiente manera:
npm i -D @babel/preset-stage-2
Y configuramos en nuestro .babelrc:
{
"presets": [
["@babel/preset-env"],
["@babel/preset-stage-2"]
]
}
¿Cómo configurar Vuex en el proyecto?
Una vez instaladas las dependencias, creamos nuestro store.js dentro de la carpeta src. Comenzamos importando las librerías necesarias:
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
Creamos una instancia de Vuex Store:
const store = new Vuex.Store({
state: {
track: {}
}
});
export default store;
Integramos este store en nuestro main.js, importándolo y agregándolo a la instancia de Vue:
import Vue from 'vue';
import App from './App.vue';
import store from './store';
new Vue({
render: h => h(App),
store
}).$mount('#app');
¿Por qué utilizar el store en lugar del eventBus?
El uso de eventBus se vuelve complicado en aplicaciones grandes debido a las complejidades en la comunicación entre padre e hijo. Con Vuex, centralizamos los datos, mejorando el flujo de información y simplificando su mantenimiento.
¿Cómo reemplazar eventBus por Vuex en un componente?
Vamos a modificar el archivo mixin.js para dejar de utilizar eventBus. Cambiamos el código para usar Vuex:
this.$store.commit('setTrack', track);
Para gestionar estos cambios, creamos una mutación en store.js:
const mutations = {
setTrack(state, track) {
state.track = track;
}
};
Esto asegura que las actualizaciones del estado pasan por un intermediario, permitiendo el seguimiento de cambios y una mejor depuración.
¿Cómo optimizar llamadas API con actions y getters?
En nuestro store, creamos una acción para obtener información de las canciones. Se para de esta manera permitiendo manejar código asincrónico:
const actions = {
getTrackByID({ commit }, payload) {
return trackService.getByID(payload.id).then(track => {
commit('setTrack', track);
return track;
});
}
};
Agregamos un getter para dar formato al título de la canción:
const getters = {
trackTitle(state) {
return state.track.name ? `${state.track.name} - ${state.track.artist[0].name}` : '';
}
};
¿Cómo implementar estas funcionalidades en los componentes?
Importamos mapState, mapGetters, y mapActions en el componente TrackDetail para facilitar la integración:
import { mapState, mapActions, mapGetters } from 'vuex';
export default {
computed: {
...mapState(['track']),
...mapGetters(['trackTitle'])
},
methods: {
...mapActions(['getTrackByID'])
},
created() {
const id = this.$route.params.id;
if (!this.track.id || this.track.id !== id) {
this.getTrackByID({ id }).then(() => console.log('Track loaded'));
}
}
};
Esto asegura que las acciones y los estados se gestionan eficientemente, optimizando las llamadas a la API únicamente cuando es necesario.
Vuex es una herramienta poderosa para aplicaciones Vue. Al centralizar la gestión de estado, nos permite construir aplicaciones más robustas y mantenibles. Te animo a continuar explorando todas sus funcionalidades y a integrar nuevas prácticas en tus proyectos.