«angular add Universal» относится к процессу добавления возможностей серверного рендеринга (SSR) к приложению Angular с использованием Angular Universal. SSR помогает сократить время начальной загрузки и позволяет сканерам поисковых систем более эффективно индексировать ваше приложение.
Вот несколько способов добавить Angular Universal в ваше приложение Angular, а также примеры кода:
Метод 1: Angular CLI
- Установить пакет схем Angular Universal:
ng add @nguniversal/express-engine - Создать универсальные файлы:
ng generate universal my-universal-app - Создайте универсальное приложение:
npm run build:ssr - Обслуживание универсального приложения:
npm run serve:ssr
Метод 2. Ручная настройка
- Установите необходимые пакеты:
npm install @nguniversal/express-engine @nguniversal/module-map-ngfactory-loader express - Создайте файл server.ts в корневом каталоге:
import 'zone.js/dist/zone-node'; import 'reflect-metadata'; import { enableProdMode } from '@angular/core'; import { renderModuleFactory } from '@angular/platform-server'; import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader'; import * as express from 'express'; import { readFileSync } from 'fs'; import { join } from 'path'; enableProdMode(); const app = express(); const PORT = process.env.PORT || 4000; const DIST_FOLDER = join(process.cwd(), 'dist/browser'); const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main'); const template = readFileSync(join(DIST_FOLDER, 'index.html')).toString(); app.engine('html', (_, options, callback) => { const opts = { document: template, url: options.req.url }; renderModuleFactory(AppServerModuleNgFactory, opts) .then(html => callback(null, html)) .catch(err => callback(err)); }); 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: LAZY_MODULE_MAP, useValue: LAZY_MODULE_MAP }] }); }); app.listen(PORT, () => { console.log(`Node server listening on http://localhost:${PORT}`); }); - Создание приложения Angular:
ng build --prod - Создание серверного приложения:
ng run my-app:server - Запустите сервер:
node server.js
Эти методы помогут вам добавить Angular Universal в ваше приложение и включить рендеринг на стороне сервера.