Angular Universal是Angular框架的一个插件,用于实现服务器端渲染(Server Side Rendering,SSR)。下面是Angular Universal SSR构建流程的工作原理以及如何自定义Webpack服务器配置来减少CSS类名的方法。
ng add @nguniversal/express-engine
import 'zone.js/dist/zone-node';
import 'reflect-metadata';
import { enableProdMode } from '@angular/core';
import { ngExpressEngine } from '@nguniversal/express-engine';
import * as express from 'express';
import { join } from 'path';
// 启用生产模式
enableProdMode();
const app = express();
// 设置Angular Universal引擎
app.engine('html', ngExpressEngine({
bootstrap: AppServerModule
}));
// 设置Angular Universal服务器静态文件根目录
app.set('view engine', 'html');
app.set('views', join(__dirname, 'dist/browser'));
// 设置Angular Universal服务器路由
app.get('*.*', express.static(join(__dirname, 'dist/browser')));
app.get('*', (req, res) => {
res.render('index', { req });
});
// 启动服务器
app.listen(4000, () => {
console.log('Server started!');
});
"scripts": {
"build:ssr": "ng build --configuration=production && ng run my-app:server:production",
"serve:ssr": "node dist/server",
"start": "npm run build:ssr && npm run serve:ssr"
}
"architect": {
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/server",
"customWebpackConfig": {
"path": "./webpack.server.config.js"
},
...
},
...
},
...
}
const webpack = require('webpack');
const nodeExternals = require('webpack-node-externals');
module.exports = {
mode: 'none',
externals: [nodeExternals()],
plugins: [
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1
})
]
};
在这个示例的Webpack服务器配置中,使用了webpack-node-externals插件来排除Node.js内置模块和外部依赖库的打包,以减少输出文件的大小。另外,使用了webpack.optimize.LimitChunkCountPlugin插件来将所有代码打包到一个文件中,以减少生成的代码文件数量。
通过以上步骤,你可以了解到Angular Universal SSR构建流程的工作原理,并且可以自定义Webpack服务器配置来减少CSS类名。