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 recursos limitats o connexions lentes. També ajuda a millorar el SEO (Search Engine Optimization) perquè els motors de cerca poden indexar el contingut renderitzat al servidor.
Beneficis d'Angular Universal
- Millora del rendiment: La renderització al servidor permet que els usuaris vegin el contingut més ràpidament.
- 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 poden veure el contingut inicial més ràpidament, millorant la percepció de la velocitat de l'aplicació.
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 facilitar aquest procés.
Aquest comandament farà el següent:
- Instal·larà les dependències necessàries.
- Configurarà el projecte per utilitzar Angular Universal.
- Crearà els fitxers necessaris per a la renderització al servidor.
Pas 2: Configuració del servidor
Angular Universal utilitza Express.js com a servidor per renderitzar l'aplicació al servidor. El fitxer server.ts
és el punt d'entrada del servidor.
import 'zone.js/dist/zone-node'; import { ngExpressEngine } from '@nguniversal/express-engine'; import * as express from 'express'; import { join } from 'path'; import { APP_BASE_HREF } from '@angular/common'; import { existsSync } from 'fs'; import { AppServerModule } from './src/main.server'; // The Express app is exported so that it can be used by serverless Functions. export function app(): express.Express { const server = express(); const distFolder = join(process.cwd(), 'dist/your-project-name/browser'); const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index'; server.engine('html', ngExpressEngine({ bootstrap: AppServerModule, })); server.set('view engine', 'html'); server.set('views', distFolder); // Example Express Rest API endpoints // server.get('/api/**', (req, res) => { }); // Serve static files from /browser server.get('*.*', express.static(distFolder, { maxAge: '1y' })); server.get('*', (req, res) => { res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] }); }); return server; } function run(): void { const port = process.env.PORT || 4000; const server = app(); server.listen(port, () => { console.log(`Node Express server listening on http://localhost:${port}`); }); } declare const __non_webpack_require__: NodeRequire; if (require.main === module) { run(); } export * from './src/main.server';
Pas 3: Construcció i desplegament
Per construir l'aplicació per a la renderització al servidor, utilitzarem el següent comandament:
Aquest comandament construirà l'aplicació per a la renderització al servidor i crearà els fitxers necessaris a la carpeta dist
.
Per iniciar el servidor, utilitzarem el següent comandament:
Aquest comandament iniciarà el servidor Express i començarà a servir l'aplicació renderitzada al servidor.
Exemples pràctics
Exemple 1: Renderització d'una pàgina simple
import { Component } from '@angular/core'; @Component({ selector: 'app-root', template: ` <h1>Benvingut a Angular Universal!</h1> <p>Aquesta pàgina està renderitzada al servidor.</p> `, styles: [] }) export class AppComponent {}
Exemple 2: Renderització amb dades dinàmiques
import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/common/http'; @Component({ selector: 'app-root', template: ` <h1>Benvingut a Angular Universal!</h1> <p>Aquesta pàgina està renderitzada al servidor.</p> <ul> <li *ngFor="let item of items">{{ item.name }}</li> </ul> `, styles: [] }) export class AppComponent implements OnInit { items: any[] = []; constructor(private http: HttpClient) {} ngOnInit() { this.http.get<any[]>('https://api.example.com/items') .subscribe(data => { this.items = data; }); } }
Exercicis pràctics
Exercici 1: Configuració bàsica d'Angular Universal
- Crea un nou projecte Angular.
- Afegeix Angular Universal al projecte.
- Configura el servidor per a la renderització al servidor.
- Construeix i serveix l'aplicació.
Exercici 2: Renderització amb dades dinàmiques
- Afegeix un component que faci una sol·licitud HTTP a una API externa.
- Renderitza el component al servidor.
- Verifica que les dades es mostren correctament a la pàgina renderitzada al servidor.
Resum
En aquesta secció, hem après què és Angular Universal i com pot millorar el rendiment i el SEO de les nostres aplicacions Angular. Hem configurat un projecte Angular per utilitzar Angular Universal, hem creat un servidor amb Express.js i hem vist exemples pràctics de com renderitzar components al servidor. També hem proporcionat exercicis pràctics per reforçar els conceptes apresos.
Curs d'Angular 2+
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- La teva primera aplicació Angular
- Arquitectura d'Angular
Mòdul 2: Conceptes bàsics de TypeScript
- Introducció a TypeScript
- Variables i tipus de dades en TypeScript
- Funcions i funcions fletxa
- Classes i interfícies
Mòdul 3: Components i plantilles
Mòdul 4: Directives i pipes
Mòdul 5: Serveis i injecció de dependències
Mòdul 6: Enrutament i navegació
Mòdul 7: Formularis en Angular
Mòdul 8: Client HTTP i observables
- Introducció al client HTTP
- Realització de sol·licituds HTTP
- Gestió de respostes HTTP
- Ús d'observables