Introducció
La renderització del costat del servidor (SSR) és una tècnica que permet generar el contingut HTML d'una aplicació al servidor en lloc de fer-ho al client. Això pot millorar significativament el rendiment i l'optimització per a motors de cerca (SEO). Nuxt.js és un framework basat en Vue.js que facilita la implementació de SSR.
Objectius
En aquesta secció, aprendràs:
- Què és Nuxt.js i com s'integra amb Vue.js.
- Com configurar un projecte Nuxt.js.
- Com implementar SSR amb Nuxt.js.
- Avantatges i desavantatges de l'ús de SSR.
Què és Nuxt.js?
Nuxt.js és un framework de codi obert basat en Vue.js que simplifica la creació d'aplicacions universals (isomòrfiques) amb SSR. Proporciona una estructura de projecte ben definida i eines per gestionar rutes, estats, i molt més.
Característiques clau de Nuxt.js
- Renderització del costat del servidor (SSR): Genera HTML al servidor per millorar el rendiment i el SEO.
- Generació estàtica: Permet generar llocs web estàtics.
- Gestió de rutes automàtica: Les rutes es generen automàticament basant-se en l'estructura de les carpetes.
- Integració amb Vuex: Facilita la gestió de l'estat de l'aplicació.
- Plugins i mòduls: Extensió fàcil de les funcionalitats de l'aplicació.
Configuració d'un projecte Nuxt.js
Instal·lació de Nuxt.js
Per començar, necessitaràs Node.js i npm instal·lats al teu sistema. Pots crear un nou projecte Nuxt.js utilitzant el següent comandament:
Segueix les instruccions per configurar el projecte segons les teves necessitats.
Estructura del projecte
Un cop creat el projecte, tindràs una estructura de carpetes similar a aquesta:
my-nuxt-app/ ├── assets/ ├── components/ ├── layouts/ ├── middleware/ ├── pages/ ├── plugins/ ├── static/ ├── store/ ├── nuxt.config.js └── package.json
- assets/: Recursos com ara CSS, imatges, etc.
- components/: Components Vue reutilitzables.
- layouts/: Plantilles de disseny per a les pàgines.
- middleware/: Funcions que s'executen abans de renderitzar una pàgina.
- pages/: Pàgines de l'aplicació. Cada fitxer aquí es converteix en una ruta.
- plugins/: Plugins de Vue.js.
- static/: Fitxers estàtics que es serviran tal qual.
- store/: Fitxers per a la gestió de l'estat amb Vuex.
- nuxt.config.js: Fitxer de configuració de Nuxt.js.
Implementació de SSR amb Nuxt.js
Configuració bàsica
Nuxt.js ve configurat per defecte per utilitzar SSR. No obstant això, pots personalitzar la configuració al fitxer nuxt.config.js
.
export default { // Mode de renderització mode: 'universal', // 'universal' per SSR, 'spa' per aplicacions d'una sola pàgina // Configuració de les rutes router: { base: '/' }, // Altres configuracions head: { title: 'My Nuxt.js App', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { hid: 'description', name: 'description', content: 'My Nuxt.js project' } ] } }
Creació de pàgines
Les pàgines es creen a la carpeta pages/
. Per exemple, pots crear una pàgina d'inici index.vue
:
<template> <div> <h1>Benvingut a la meva aplicació Nuxt.js</h1> </div> </template> <script> export default { asyncData() { return { message: 'Hola, món!' } } } </script> <style> /* Estils CSS */ </style>
Utilització de asyncData
La funció asyncData
permet obtenir dades abans de renderitzar la pàgina, la qual cosa és útil per a SSR.
export default { asyncData({ params }) { return axios.get(`https://api.example.com/data/${params.id}`) .then((res) => { return { data: res.data } }) } }
Avantatges i desavantatges de SSR
Avantatges
- Millora del SEO: Els motors de cerca poden indexar millor el contingut generat al servidor.
- Millor rendiment inicial: Els usuaris reben una pàgina completament renderitzada des del servidor.
- Millor experiència d'usuari: Redueix el temps de càrrega percebut.
Desavantatges
- Complexitat: La configuració i el desplegament poden ser més complexos.
- Cost del servidor: Pot requerir més recursos del servidor per generar les pàgines.
Exercici pràctic
Objectiu
Crear una aplicació Nuxt.js que mostri una llista de tasques obtingudes d'una API.
Passos
- Configura un nou projecte Nuxt.js.
- Crea una pàgina
tasks.vue
a la carpetapages/
. - Utilitza
asyncData
per obtenir les tasques d'una API. - Mostra les tasques a la pàgina.
Solució
<!-- pages/tasks.vue --> <template> <div> <h1>Llista de tasques</h1> <ul> <li v-for="task in tasks" :key="task.id">{{ task.title }}</li> </ul> </div> </template> <script> import axios from 'axios' export default { asyncData() { return axios.get('https://jsonplaceholder.typicode.com/todos') .then((res) => { return { tasks: res.data } }) } } </script> <style> /* Estils CSS */ </style>
Conclusió
En aquesta secció, has après els conceptes bàsics de la renderització del costat del servidor (SSR) amb Nuxt.js. Has configurat un projecte Nuxt.js, creat pàgines i utilitzat asyncData
per obtenir dades abans de la renderització. També has explorat els avantatges i desavantatges de l'ús de SSR. Amb aquests coneixements, estàs preparat per crear aplicacions Vue.js més ràpides i optimitzades per a SEO utilitzant Nuxt.js.
Curs de Vue.js
Mòdul 1: Introducció a Vue.js
- Què és Vue.js?
- Configuració de l'entorn de desenvolupament
- Creant la teva primera aplicació Vue
- Entenent la instància de Vue
Mòdul 2: Conceptes bàsics de Vue.js
- Sintaxi de plantilles
- Enllaç de dades
- Propietats computades i observadors
- Enllaços de classes i estils
- Renderització condicional
- Renderització de llistes
Mòdul 3: Components de Vue.js
- Introducció als components
- Props i esdeveniments personalitzats
- Slots
- Components dinàmics i asíncrons
- Comunicació entre components
Mòdul 4: Vue Router
- Introducció a Vue Router
- Configuració de Vue Router
- Rutes dinàmiques
- Rutes niades
- Guàrdies de navegació
Mòdul 5: Gestió d'estat amb Vuex
- Introducció a Vuex
- Estat, getters, mutacions i accions
- Mòduls a Vuex
- Utilitzant Vuex en components
- Patrons avançats de Vuex
Mòdul 6: Directives de Vue.js
Mòdul 7: Plugins de Vue.js
Mòdul 8: Proves en Vue.js
Mòdul 9: Conceptes avançats de Vue.js
- Funcions de renderització i JSX
- Renderització del costat del servidor (SSR) amb Nuxt.js
- API de composició de Vue 3
- Optimització del rendiment