[英]Angular Universal selective rendering
Can I chose certain paths to not be server-side rendered when running an Angular app with Angular Universal?在运行带有 Angular Universal 的 Angular 应用程序时,我可以选择某些路径而不是服务器端呈现吗?
The default server.ts file that is generated:生成的默认 server.ts 文件:
export function app() {
const server = express();
const distFolder = join(process.cwd(), 'dist/browser');
const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
server.engine('html', ngExpressEngine({
bootstrap: AppServerModule,
}));
server.set('view engine', 'html');
server.set('views', distFolder);
// TODO: implement data requests securely
server.get('/api/**', (req, res) => {
res.status(404).send('data requests are not yet supported');
});
// Serve static files from /browser
server.get('*.*', express.static(distFolder, {
maxAge: '1y'
}));
// All regular routes use the Universal engine
server.get('*', (req, res) => {
res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
});
return server;
}
Can I add a rule for a certain path to be served like it would be in a regular ng serve
?我可以像在常规
ng serve
中一样为某个要服务的路径添加规则吗?
You can just send the index.html
file straight to the client for selected routes您可以将
index.html
文件直接发送到客户端以获取所选路线
//No prerendering for /about and /contact
//Note that these routes must be defined before the '*' generic route
app.get('/contact|/about', function(req, res) {
res.sendFile(path.join(distFolder, 'index.html'));
});
// All other regular routes use the Universal engine
server.get('*', (req, res) => {
res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.