angular 中的动态服务器端渲染 (SSR) 和客户端渲染 (CSR) 取决于请求者

Dynamic Server Side Rendering (SSR) and Client Side Rendering (CSR) in angular depending who requested

是否可以创建 Node.js 服务来根据是客户端还是服务器来呈现 angular 应用程序?

现在我只使用 SSR,我按照这个 angular documentation 来创建一个服务来呈现应用程序。

如何同时使用渲染?

请按照此 tutorial 对请求启用 user-agent 检测

TLDR:

通过npm install isbot

安装isbot包

server.ts 更改此行:

 // All regular routes use the Universal engine
  server.get('*', (req, res) => {
    res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
  });

为此:

// All regular routes use the Universal engine
  server.get('*', (req, res) => {
    if (isbot(req.headers['user-agent'])) {
      console.log('bot and running on SSR');
    res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
    } else {
      console.log('Running on CSR');
      res.sendFile(join(distFolder, `index.html`));
    }
  });