Integración de VueJS con Nuxt para Server-Side Rendering

Clase 47 de 53Curso Profesional de Vue.js 2

Resumen

¿Cómo integrar Vue.js en una aplicación con Nax?

Integrar Vue.js en aplicaciones con server-side rendering como Nax puede parecer complicado al principio, pero es más sencillo de lo que se piensa, ya que conservamos la sintaxis y los componentes de Vue.js. En este artículo, exploraremos paso a paso cómo integrar Vue.js en un proyecto de Nax replicando el Platzi Music original. Este enfoque te permitirá comprender mejor las diferencias y beneficios de incluir server-side rendering de manera eficiente en tus aplicaciones.

¿Cómo trabajamos con componentes en Nax?

Los componentes en Nax se gestionan de manera similar a Vue.js, pero debemos tener en cuenta la estructura de directorios únicos del framework. En la raíz del proyecto de Nax, creamos componentes reutilizables:

  1. Inicia creando los componentes del header y el footer:

    • Abre el proyecto anterior, Platzi Music, y el nuevo proyecto con Nax.
    • Copia el contenido del header y footer existentes en Platzi Music y pégalos en los archivos header.vue y footer.vue dentro del directorio components en el proyecto de Nax.
  2. Configura los componentes en el layout:

    • Importa los componentes dentro del archivo default.vue en el directorio layouts.
    • Utiliza la sintaxis de ECMAScript para importar los componentes:
    import HeaderComponent from '~/components/Header.vue'
    import FooterComponent from '~/components/Footer.vue'
    
    • Declara estos componentes en la exportación por defecto y colócalos apropiadamente dentro del template HTML.

¿Cómo instalar dependencias necesarias para Nax?

Antes de poder utilizar ciertas características de Vue.js y otras librerías como Bulma, necesitamos instalar las siguientes dependencias:

  • Abre la terminal y ejecuta el siguiente comando:
    npm install --save-dev sass-loader@^7.0.1 node-sass
    

Esto permite compilar estilos SCSS que son utilizados comúnmente en proyectos diseñados con framework CSS como Bulma.

¿Cómo definir rutas dinámicas en Nax?

Al crear rutas, Nax simplifica la creación de URLs dinámicas mediante la estructura del directorio pages:

  1. Establece rutas dinámicas:

    • Dentro de pages, crea un directorio track y dentro de él, crea un archivo _[id].vue.
    • Este archivo representa rutas dinámicas utilizando el guion bajo _ seguido del nombre del parámetro, id en este caso, para lograr URLs dinámicas como /track/1.
  2. Configura el contenido de las rutas:

    • Copia el contenido base de la vista de detalles de pista de Platzi Music al nuevo archivo _[id].vue.
    • Usa el hook asyncData de Nax para realizar llamadas asíncronas y gestionar datos sin problemas. Este hook asegura que los datos estén disponibles antes de que se renderice la página en el servidor.

¿Cómo usamos el hook asyncData y gestionar el estado en Nax?

El hook asyncData es crucial en Nax, permitiéndonos manejar datos asíncronos en el server-side rendering:

  • Dentro de _[id].vue usa asyncData para manejar peticiones:
    asyncData ({ params }) {
      return axios.get(`https://api.example.com/track/${params.id}`)
        .then((res) => {
          return { track: res.data }
        })
    }
    

Este enfoque permite sincronizar datos antes de que el componente sea renderizado, mejorando la experiencia del usuario y fomentando un SEO eficaz.

¿Cómo personalizar el contenido del head en Nax?

Alterar dinámicamente el contenido del head, como el título de la página, es posible usando el hook head de Nax. Personalizar detalles del head mejora la indexación de tu página en motores de búsqueda:

  • Dentro de _[id].vue, define la función head:
    head () {
      return {
        title: this.track.name,
      }
    }
    

Configurar dinámicamente los metadatos del documento HTML aporta un plus a la optimización SEO de tu aplicación al proporcionar contenido relevante para cada vista.

Retos y siguientes pasos

Ahora que tienes las herramientas básicas para integrar Vue.js en aplicaciones server-side con Nax, ¡es hora de ser creativo! Completa la aplicación añadiendo funcionalidad de búsqueda y el reproductor, así como importando Bulma para darle estilo. La práctica es la mejor manera de dominar estas herramientas y llevar tus aplicaciones al siguiente nivel. ¡Sigue aprendiendo, experimentando y desarrollándote como programador innovador!