Crearemos una aplicación haciendo uso del Framework Quasar, la librería Vue Leaflet, la extensión Quasar Dotenv y Vuex. Con esta, obteniendo la ubicación del usuario le indicaremos a este dónde se encuentra el Service Point de DHL más cercano y distinta información sobre el mismo.
El código completo se encuentra en el siguiente repositorio de Github.
Crear la aplicación con Quasar
En primer lugar instalamos Quasar CLI de forma global y así poder usarla en otros proyectos. Seguidamente crearemos la aplicación y la nombramos:
A las siguientes preguntas respondemos con las respuestas por defecto:
En las siguientes elegimos SCSS como preprocesador (aunque en principio no lo he utilizado), auto importamos los componentes y directivas de Quasar, añado las librerías de Vuex (para el manejo de estados) y Axios (aunque utilizaremos fetch) y escojo usar npm como gestor de paquetes:
Para empezar a desarrollar entramos en el directorio del proyecto, ejecutamos el servidor en modo de desarrollo y abrimos el editor de código:
Variables de entorno con Quasar
Para esta aplicación vamos a utilizar una clave privada para acceder a una API, por lo que vamos a utilizar una variable de entorno para disponer de ella tanto en desarrollo como en producción, pero nunca en el repositorio público de Github. para ello vamos a instalar la extensión Quasar Dotenv:
Esto crea el archivo .env donde conservamos la clave de la API:
Duplicamos el archivo y lo renombramos como .env.example para subirlo a Github:
Para obtener la clave de la API debes acceder a la siguiente ubicación web.
Manejo de estados con Vuex
Para comprender un mejor uso de Vuex te recomiendo visitar el Post Llamar a una API con Fetch desde Vuex store.
Lo correcto sería crear un módulo en la carpeta store con el comando :
el cual crea la estructura del store, pero en mi caso he duplicado el módulo module- example que trae como ejemplo.
En src/store/index.js
Descomentamos las siguientes líneas para utilizar el módulo que viene como ejemplo al instalar la aplicación (en caso de haberlo creado nosotros debemos añadir las líneas con el nombre de nuestro módulo):
state.js
Inicializamos los atributos que vamos a necesitar en toda la aplicación:
getters.js
Esta función accede al atributo userCoordenade:
mutations.js
Las siguientes funciones transforman el valor de los atributos:
actions.js
La siguiente función accede a la API pasando en la cabecera la clave que hemos guardado anteriormente en el archivo .env y al recibir respuesta carga los datos de la API haciendo uso de las Mutaciones:
Implementar Componentes
Creamos los componente de Vue: Location, ServicePoint y Map para usarlos en la página Index.vue e Info para usarlo en el MainLayout:
Location.vue
Geolocaliza la posición del usuario al montar la aplicación y las guarda con SET_LOCATION:
ServicePoint.vue
Este componente tiene un botón que dispara la función showMap ( ) ,la cual obtiene los datos de la API:
Map.vue
En public/icons añadir los iconos place-black-24dp.svg y storefront-24px.svg de obtenidos en Material Icons.
El siguiente componente crea el mapa, indicando con un icono dónde está el usuario y dónde el Service Point. Para ello hace uso de la librería Vue Leaflet que instalaremos en el siguiente apartado. Para una mejor comprensión de esta librería aconsejo seguir la documentación de Vue Leaflet.
Instalar Vue Leaflet
Añadimos las siguientes líneas de código al componente Map.vue para hacer uso de Vue Leaflet de forma local en este (en el archivo que hemos visto anteriormente ya están añadidas):
Modificar Layout
En src/layouts/MainLayout.vue modificamos el Layout por defecto añadiendo el componente Info en el q-drawer. En <q-page-container> le indico la ruta a <router-view />, la cual nos lleva a la página Index.vue:
Modificar la Página Principal
En src/pages/Index.vue incluimos los componentes Location, ServicePoint y Map:
Con esto hemos acabado, sólo queda hacer el Build para la plataforma que queramos implementar. Para una información más completa de Quasar leer su documentación.
Deja una respuesta