简体   繁体   English

Angular 通用选择性渲染

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM