Angular Universal 是一个用于服务器端渲染 Angular 应用程序的框架。Angular Universal 会在服务器端预先渲染应用程序,然后将预渲染后的 HTML 和 CSS 发送给客户端,从而提高应用程序的性能和 SEO。下面是一个示例,展示了 Angular 应用程序如何通过 Angular Universal 进行服务器端渲染:
npm install --save @angular/platform-server @nguniversal/module-map-ngfactory-loader
import { enableProdMode } from '@angular/core'; import { renderModuleFactory } from '@angular/platform-server'; import { ngExpressEngine } from '@nguniversal/express-engine'; import { AppServerModuleNgFactory } from './path/to/app.server.module.ngfactory';
const express = require('express'); const app = express();
app.engine('html', ngExpressEngine({ bootstrap: AppServerModuleNgFactory }));
app.set('view engine', 'html'); app.set('views', 'dist');
enableProdMode();
app.get('*', (req, res) => { res.render('index', { req: req, res: res }); });
app.listen(process.env.PORT || 3000);
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { ServerModule } from '@angular/platform-server'; import { ModuleMapLoaderModule } from '@nguniversal/module-map-ngfactory-loader';
import { AppComponent } from './app.component'; import { AppRoutingModule } from './app.routing.module'; import { HeaderComponent } from './header/header.component'; import { FooterComponent } from './footer/footer.component';
@NgModule({ imports: [ BrowserModule.withServerTransition({ appId: 'my-app' }), ServerModule, AppRoutingModule, ModuleMapLoaderModule ], declarations: [ AppComponent, HeaderComponent, FooterComponent ], bootstrap: [AppComponent