我知道Angular Universal仍在开发中。因此,我考虑过将Angular Universal用于Web应用程序,该应用程序会定期从外部API服务器提取数据(大约每10秒通过Http服务提取一次)。然后,该数据显示在Web应用程序上。

我遇到了一些尚未找到简单解决方案的问题:


Angular Universal显然需要API服务器中的数据来预渲染页面。我不想每次请求Web应用HTML时都从nodeJS查询API服务器。如果nodeJS服务器完全像一个客户端Web应用程序实例一样“运行”,并且也每隔10秒查询API服务器,以10s的间隔“缓存”该数据并使用它呈现HTML,就足够了。
客户端网络应用将来自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
};

关于javascript - Angular Universal +外部API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40241355/

10-11 14:10