Introducció a Angular Universal
Angular Universal és una tecnologia que permet renderitzar aplicacions Angular al servidor. Això millora el rendiment de l'aplicació i l'experiència de l'usuari, especialment en dispositius amb connexions lentes. També ajuda a millorar el SEO (Search Engine Optimization) perquè els motors de cerca poden indexar millor el contingut de l'aplicació.
Beneficis d'Angular Universal
- Millora del rendiment inicial: La pàgina es carrega més ràpidament perquè el contingut es renderitza al servidor abans d'enviar-se al client.
- Millora del SEO: Els motors de cerca poden indexar el contingut renderitzat al servidor, millorant la visibilitat de l'aplicació.
- Millor experiència d'usuari: Els usuaris veuen el contingut més ràpidament, fins i tot abans que l'aplicació Angular es carregui completament al client.
Configuració d'Angular Universal
Pas 1: Instal·lació de les dependències necessàries
Per començar a utilitzar Angular Universal, primer hem d'instal·lar les dependències necessàries. Utilitzarem Angular CLI per afegir Angular Universal al nostre projecte.
Aquest comandament farà el següent:
- Instal·larà les dependències necessàries.
- Configurarà el projecte per utilitzar Angular Universal.
- Crearà fitxers addicionals per a la configuració del servidor.
Pas 2: Configuració del servidor
Després d'executar el comandament anterior, veurem que s'han creat alguns fitxers nous, incloent server.ts. Aquest fitxer conté la configuració del servidor Express per renderitzar la nostra aplicació Angular al servidor.
import 'zone.js/dist/zone-node';
import { ngExpressEngine } from '@nguniversal/express-engine';
import * as express from 'express';
import { join } from 'path';
import { AppServerModule } from './src/main.server';
import { APP_BASE_HREF } from '@angular/common';
import { existsSync } from 'fs';
const app = express();
const DIST_FOLDER = join(process.cwd(), 'dist/browser');
app.engine('html', ngExpressEngine({
bootstrap: AppServerModule,
}));
app.set('view engine', 'html');
app.set('views', DIST_FOLDER);
app.get('*.*', express.static(DIST_FOLDER, {
maxAge: '1y'
}));
app.get('*', (req, res) => {
res.render('index', { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
});
const PORT = process.env.PORT || 4000;
app.listen(PORT, () => {
console.log(`Node server listening on http://localhost:${PORT}`);
});Pas 3: Construcció de l'aplicació
Per construir l'aplicació per a la renderització al servidor, utilitzarem el següent comandament:
Aquest comandament crearà dues versions de l'aplicació:
- Una per al navegador (
dist/browser) - Una per al servidor (
dist/server)
Pas 4: Executar l'aplicació
Finalment, per executar l'aplicació renderitzada al servidor, utilitzarem el següent comandament:
Aquest comandament iniciarà el servidor Express i renderitzarà l'aplicació Angular al servidor.
Exemples pràctics
Exemple 1: Renderització d'una pàgina simple
Suposem que tenim un component simple que mostra un missatge de benvinguda.
import { Component } from '@angular/core';
@Component({
selector: 'app-welcome',
template: `<h1>Benvingut a la nostra aplicació Angular Universal!</h1>`,
})
export class WelcomeComponent {}Quan l'aplicació es carrega, aquest missatge es renderitzarà al servidor i es mostrarà immediatament al navegador.
Exemple 2: Millora del SEO
Suposem que tenim una pàgina amb contingut dinàmic que volem que els motors de cerca indexin.
import { Component, OnInit } from '@angular/core';
import { Meta, Title } from '@angular/platform-browser';
@Component({
selector: 'app-seo',
template: `<h1>Contingut SEO</h1><p>Aquest és un contingut important per al SEO.</p>`,
})
export class SeoComponent implements OnInit {
constructor(private meta: Meta, private title: Title) {}
ngOnInit() {
this.title.setTitle('Pàgina SEO');
this.meta.addTags([
{ name: 'description', content: 'Aquesta és una pàgina important per al SEO.' },
{ name: 'keywords', content: 'Angular, SEO, Universal' },
]);
}
}Amb Angular Universal, aquest contingut es renderitzarà al servidor, permetent que els motors de cerca indexin la pàgina correctament.
Exercicis pràctics
Exercici 1: Configurar Angular Universal
- Crea un nou projecte Angular.
- Afegeix Angular Universal al projecte.
- Configura el servidor per renderitzar l'aplicació al servidor.
- Construeix i executa l'aplicació.
Exercici 2: Millorar el SEO d'una pàgina
- Crea un component que mostri contingut dinàmic.
- Afegeix metaetiquetes per millorar el SEO.
- Verifica que el contingut es renderitza correctament al servidor.
Conclusió
Angular Universal és una eina poderosa per millorar el rendiment i el SEO de les aplicacions Angular. Amb la configuració adequada, podem renderitzar les nostres aplicacions al servidor, oferint una millor experiència d'usuari i una millor visibilitat als motors de cerca. En els següents mòduls, explorarem altres conceptes avançats d'Angular per continuar millorant les nostres aplicacions.
Curs d'Angular
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- Arquitectura d'Angular
- Primera aplicació Angular
Mòdul 2: Components d'Angular
- Comprendre els components
- Crear components
- Plantilles de components
- Estils de components
- Interacció de components
Mòdul 3: Enllaç de dades i directives
- Interpolació i enllaç de propietats
- Enllaç d'esdeveniments
- Enllaç de dades bidireccional
- Directives integrades
- Directives personalitzades
Mòdul 4: Serveis i injecció de dependències
Mòdul 5: Enrutament i navegació
Mòdul 6: Formularis a Angular
Mòdul 7: Client HTTP i observables
- Introducció al client HTTP
- Fer sol·licituds HTTP
- Gestionar respostes HTTP
- Utilitzar observables
- Gestió d'errors
Mòdul 8: Gestió d'estat
- Introducció a la gestió d'estat
- Utilitzar serveis per a la gestió d'estat
- NgRx Store
- NgRx Effects
- NgRx Entity
Mòdul 9: Proves a Angular
- Proves unitàries
- Proves de components
- Proves de serveis
- Proves de cap a cap
- Simulació de dependències
Mòdul 10: Conceptes avançats d'Angular
- Angular Universal
- Optimització del rendiment
- Internacionalització (i18n)
- Tubs personalitzats
- Animacions d'Angular
