为什么需要 Angular 通用?

Why is Angular Universal necessary?

所以显而易见的答案是它是必需的,因为它提供来自服务器的路由路径,因此我们不会收到 404。

然而,像 angular-cli-ghpages 这样的解决方案通过向应用程序添加一个脚本来解决这个问题,该脚本解析 404 中返回的参数,然后将应用程序重新路由到正确的状态。

所以很好奇这有什么缺点吗?为什么不普遍使用它而不是像 Angular Universal 或 Rendertron 这样的解决方案?

例如,spa-github-pages 是这样说的:

A quick SEO note - while it's never good to have a 404 response, it appears based on Search Engine Land's testing that Google's crawler will treat the JavaScript window.location redirect in the 404.html file the same as a 301 redirect for its indexing. From my testing I can confirm that Google will index all pages without issue, the only caveat is that the redirect query is what Google indexes as the url. For example, the url example.tld/about will get indexed as example.tld/?p=/about. When the user clicks on the search result, the url will change back to example.tld/about once the site loads.

主要有两点:

  1. 首页加载速度;
  2. 搜索引擎优化

机器人不会 运行 javascript,因此它们解析从服务器获取的内容,而不是 Universal 的内容。

即使使用由 ghpages 提供的 --aot 构建的应用程序以及从索引克隆的 404 页面,client/robot 仍然需要获取第一个文件,解析它们并最终挂载最终视图。 Gh 页面不提供最终 html 状态。