我知道 Angular Universal 仍在开发中。因此,我考虑过将 Angular Universal 用于一个 Web 应用程序,该应用程序定期从外部 API 服务器提取数据(大约每 10 秒通过 Http 服务提取一次)。然后,该数据将显示在网络应用程序上。
我遇到了几个尚未找到简单解决方案的问题:
- Angular Universal 显然需要来自 API 服务器的数据来预渲染页面。我不想每次请求 Web 应用程序 HTML 时都从 NodeJS 查询 API 服务器。如果 NodeJS 服务器的“行为”与一个客户端 Web 应用程序实例完全相同,并且也每 10 秒查询一次 API 服务器,以 10 秒的间隔“缓存”此数据并使用它来渲染 HTML,那就足够了。
- 客户端 Web 应用程序将来自 API 服务器的数据存储在某个私有成员变量中。然后使用该成员变量通过 ngFor、绑定等来构建 HTML。当然,该成员变量在开始时是空的/未定义的。我不希望客户端 Web 应用程序在启动时擦除预渲染的 HTML,因为这会破坏 Angular Universal 的一些想法(不是 SEO,而是减少加载时间)。
我希望你明白我在这里想要实现的目标。您知道如何解决这个问题,或者是否有一种“官方”方法可以做到这一点?我确信我不是唯一一个尝试做类似事情的人。
Angular Universal 不知道您的代码是服务器代码还是客户端代码,它只是获取您的应用程序并尝试在服务器上呈现它。但正如您所提到的,有时您希望服务器的行为与客户端不同。例如,如果您有一个想要的函数,Angular Universal 将跳过将此行代码放在函数体的顶部。
if (typeof window === "undefined") return;
或者,如果您有一个场景需要服务器执行与客户端不同的操作,请执行此操作
if (typeof window === "undefined") {
// server code
} else {
// client code
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)