Refactorización de Importaciones en Vue.js con Plugins
Clase 13 de 27 • Curso Avanzado de Vue.js 2
Contenido del curso
VueCli, configuración inicial del proyecto y consumo del API de Blizzard
- 2

Creación de Aplicaciones Vue.js con API de Diablo III
03:24 min - 3

Desarrollo de Aplicaciones con APIs de Blizzard: Guía Completa
04:55 min - 4

Estructura y gestión de carpetas en proyectos Vue.js
04:40 min - 5

Instalación y configuración de librerías en Vue con Bootstrap
01:29 min - 6

Configuración de Axios para llamadas a APIs de Diablo III
02:45 min - 7

Gestión de Tokens con Vuex: Integración y Almacenamiento en Vue.js
05:17 min
Creación de los componentes y layouts de nuestro proyecto
- 8

Componente Reutilizable de Carga con Vue.js
03:05 min - 9

Estilos CSS oscuros para aplicaciones Vue.js con Stylus
02:01 min - 10

Creación de Layouts con Vue y Bootstrap para Mejorar la UI
06:08 min - 11

Organización de Assets en Vue: Imágenes, Fuentes y CSS Globales
02:47 min - 12

Creación de NavBar y Footer con BootstrapVue y FontAwesome
06:25 min - 13

Refactorización de Importaciones en Vue.js con Plugins
Viendo ahora - 14

Buscador de Perfiles en Diablo III: Creación de Formulario y Título
08:57 min - 15

Rutas Dinámicas y Lazy Loading en Vue.js
08:02 min - 16

Construcción y Consumo de APIs con Vue.js y Vuex
13:51 min - 17

Creación y Uso de Componentes en Vue.js: MainBlock y TopHeroes
17:32 min - 18

Visualización de Héroes con Bootstrap-Vue en Diablo III
17:28 min - 19

Componente de Progreso de Actos en Vue.js
06:11 min - 20

Implementación de Componentes Vue: MainBlock y PlayerStats
12:55 min - 21

Navegación y Visualización de Artesanos en Vue.js
13:48 min - 22

Funciones y Componentes para la Vista de Héroe en Vue.js
27:13 min
Agregando funcionalidades avanzadas a nuestro proyecto
- 23

Carga Diferida de Componentes en Vue.js: Mejora de Rendimiento
08:01 min - 24

Implementación de Inventario de Objetos de Personaje en Vue.js
15:48 min - 25

Directivas Personalizadas en Vue: Creación y Uso Básico
07:28 min - 26

Configuración y despliegue de aplicaciones en Netlify con Vue.js
06:54 min - 27

Creación y Personalización de Páginas en Vue.js
06:31 min
Nuestro proyecto va creciendo, poco a poco, con librerías, configuraciones y demás contenido.
El fichero de arranque main.js está haciéndose un poco difícil de manejar debido a todo el contenido que le estamos metiendo.
Una buena idea puede ser llevarse todo el código de librerías de terceros a una carpeta externa. Esta carpeta ya la tenemos creada y se llama /plugins. Vamos a meter ahí el código de Bootstrap-Vue y de FontAwesome. Luego lo importaremos en el main.js y así quedará mas limpio y legible nuestro código.
Empezamos creando el fichero BootstrapVue.js dentro de /plugins, y le damos el siguiente contenido:
import Vue from 'vue' import BootstrapVue from 'bootstrap-vue' import 'bootstrap/dist/css/bootstrap.css' import 'bootstrap-vue/dist/bootstrap-vue.css' Vue.use(BootstrapVue)
Tal y como dice la documentación, importamos BootstrapVue, nos traemos el CSS y después hacemos 'uso' de BootstrapVue desde Vue.
Hacemos lo mismo con FontAwesome, creamos el fichero fontAwesome.js dentro de /plugins y movemos todo el contenido que había en main.js a este fichero:
import Vue from 'vue' import { library } from '@fortawesome/fontawesome-svg-core' import { faSkull, faCrown, faDungeon, faHatWizard, faHammer, faGem } from '@fortawesome/free-solid-svg-icons' import { faVuejs, faBootstrap, faFontAwesome, faGithub, faBattleNet } from '@fortawesome/free-brands-svg-icons' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' library.add( faSkull, faCrown, faDungeon, faHatWizard, faHammer, faGem, faVuejs, faBootstrap, faFontAwesome, faGithub, faBattleNet ) // Esta es la forma de registrar un componente global con Vue // El primer parámetro es cómo queremos que se use/llame nuestro componente desde el HTML // El segundo parámetro es la referencia al componente (que acabamos de importar) Vue.component('font-awesome-icon', FontAwesomeIcon)
Tu carpeta de /plugins se vería así:
📂 /plugins ├── bootstrapVue.js └── fontAwesome.js
Lo que hemos hecho es mover el todo el contenido de dichas librerías fuera del main.js y ponerlo en archivos independientes.
Ahora queda hacer referencia a estos archivos desde el main.js para que todo siga funcionando tal y como estaba antes. Lo puedes hacer de la siguiente forma:
// BootstrapVue import './plugins/bootstrapVue' // Vue Font-Awesome import './plugins/fontAwesome'
Ya que estamos en el apartado de refactorizar y estamos tocando el main.js, podemos quitar el console.log('Hola 🌝') que pusimos al principio, que ya no nos sirve para nada.
Tu fichero main.js completo se vería así:
import Vue from 'vue' // BootstrapVue import './plugins/bootstrapVue' // Vue Font-Awesome import './plugins/fontAwesome' import App from './App.vue' import router from './router' import store from './store' // CSS global import './assets/css/main.styl' Vue.config.productionTip = false new Vue({ router, store, methods: { // Nuestra función init () { store.dispatch('oauth/getToken') } }, // Hook created created () { this.init() }, render: h => h(App) }).$mount('#app')
Te habrás dado cuenta de que hemos importado Vue 2 veces, una para el fichero de BootstrapVue.js y otra vez para el de fontAwesome.js.
No te preocupes, no vamos a tener código duplicado y nuestra aplicación no va a ser el doble de grande. De esto se encarga Webpack, solo lo incluirá una vez en el bundle final.
¡Fíjate!, ahora nuestro archivo queda más limpio y legible 👏. Hemos agrupado contenido por funcionalidad. A partir de ahora, todas las librerías que vayamos metiendo las podemos dejar dentro de la carpeta /plugins para tener nuestro código más ordenado.