我已经阅读了几篇文章,其中一些是official Angular Universal page,简介here等。
我不完全了解-Angular Universal服务器是否仍提供单个页面(大量的html),或者是否可以将Angular Universal配置为返回多个页面(一次应用程序的一部分) )基于路线(请求/路线)?
最终目标是在不存在路由的情况下返回硬404(但是,就上下文而言,这超出了此问题的范围)。
对我来说令人困惑的部分在这里:
这是因为与服务器端呈现的HTML一起,我们将 还向浏览器提供了普通的客户端Angular应用程序。
此Angular客户端应用程序将接管页面,并从 那里的所有东西都像普通的单页应用程序一样工作, 意味着所有运行时渲染将直接在 客户像往常一样。
那么the server-side rendered HTML
到底是什么?它是预先渲染的整个应用程序,还是某种程度上针对用户请求的“路线” /视图/内容?
答案 0 :(得分:5)
TL; DR
index.html
页面作为预渲染的html文件提供,因此用户没有(很长)等待时间。index.html
一起发送。index.html
)进行交互,但是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和其他技术来解决