Angular Universal仍然是SPA吗?

时间:2019-06-04 17:25:20

标签: angular angular-universal

我已经阅读了几篇文章,其中一些是official Angular Universal page,简介here等。

我不完全了解-Angular Universal服务器是否仍提供单个页面(大量的html),或者是否可以将Angular Universal配置为返回多个页面(一次应用程序的一部分) )基于路线(请求/路线)?

最终目标是在不存在路由的情况下返回硬404(但是,就上下文而言,这超出了此问题的范围)。

对我来说令人困惑的部分在这里:

  

这是因为与服务器端呈现的HTML一起,我们将   还向浏览器提供了普通的客户端Angular应用程序。

     

此Angular客户端应用程序将接管页面,并从   那里的所有东西都像普通的单页应用程序一样工作,   意味着所有运行时渲染将直接在   客户像往常一样。

那么the server-side rendered HTML到底是什么?它是预先渲染的整个应用程序,还是某种程度上针对用户请求的“路线” /视图/内容?

2 个答案:

答案 0 :(得分:5)

TL; DR

  • Angular Universal将您的初始index.html页面作为预渲染的html文件提供,因此用户没有(很长)等待时间。
  • 它还会将整个SPA与初始预渲染的index.html一起发送。
  • 虽然用户可以立即开始与初始页面(例如index.html)进行交互,但是SPA在后台启动。
  • SPA一旦完成引导程序,就会开始处理用户请求。

关于SPA的讨论

Angular和其他类似框架和/或库(例如React)背后的意图是提供称为单页应用程序(SPA)的服务。 SPA是在浏览器中运行的功能完善的应用程序,它可以自行呈现不同的页面,而无需与后端服务器进行交互。通常,仅当它请求可能显示在SPA中的其他数据时,它才与后端服务器通信。

引导SPA可能很慢

虽然SPA确实很棒,并且消除了每次用户导航到Web应用程序的另一个页面时都需要从后端服务器请求文件的情况,但是SPA的初始启动时间可能非常慢(取决于客户端)机器),并且在SPA引导时可能会导致初始空白页或加载指示器。

Angular Universal

通过查看旋转的加载图标或空白页面来消除用户的等待时间,Angular Universal可以通过在后端进行预渲染来提供应用程序的初始index.html页面。此外,它将Angular Application(您的SPA)与预渲染的index.html一起发送到客户端浏览器。

示例

例如,这可能是您的应用程序的登录页面,该页面在后端预先呈现并提供给用户。最后,当您的SPA仍在用户浏览器的后台启动时,用户可以立即开始与该页面(在此示例中为登录页面)进行交互。在用户记住其凭据的时间,SPA已完成自举并为用户将来的所有请求提供服务。因此,用户不必盯着正在加载的动画或空白页面,也不太可能放弃您的网页。

答案 1 :(得分:1)

是的,使用通用角度渲染的应用程序仍然是SPA。动态呈现的只是到达您网站时与当前路线相对应的页面,因此route/view/whatever。之后,每当您浏览路线时,这只是正常的SPA角度导航(实际上并没有刷新整个页面)

与该路由相对应的html是使用通用角度角度动态生成的,并返回给客户端,从而确保了SEO友好且快速的页面。然后,客户端的角度应用程序将引导并重播API请求和组件创建,但是在出现空白页面时您不会得到空白页面。

但是,当客户端应用程序接管时,您可能会出现一些“闪烁”,但这可以使用TransferState和其他技术来解决