Angular Universal +外部API

时间:2016-10-25 13:30:19

标签: javascript node.js angular angular-universal

我知道Angular Universal仍处于开发阶段。所以我考虑过将Angular Universal用于一个定期从外部API服务器提取数据的Web应用程序(大约每隔10秒通过Http服务)。然后,此数据将显示在Web应用程序中。

我遇到了几个问题,我还没有找到一个简单的解决方案:

  1. Angular Universal显然需要来自API服务器的数据来预呈现页面。我不希望每次请求Web应用程序HTML时都从nodeJS查询API服务器。如果nodeJS服务器“表现”完全像一个客户端Web应用程序实例并且每10秒查询一次API服务器就足够了,以10秒的间隔“缓存”这些数据并使用它来呈现HTML。
  2. 客户端Web应用程序将来自API服务器的数据存储在某个私有成员变量中。然后使用此成员变量通过ngFor,bindings等从其构建HTML。但是此成员变量在开头当然是空的/未定义的。我不希望客户端Web应用程序在启动时擦除预渲染的HTML,因为这会破坏Angular Universal的一些想法(不是SEO,但会缩短加载时间)。
  3. 我希望你能理解我在这里想要达到的目标。你知道如何处理这个问题,还是有“官方”方式来做到这一点?我相信我不是唯一一个试图做那样的人。

2 个答案:

答案 0 :(得分:0)

Angular Universal不知道您的代码是服务器代码还是客户端代码,它只需要您的应用程序并尝试在服务器上呈现它。但正如您所提到的那样,您希望服务器采取与客户端不同的行为。例如,如果你有一个你希望Angular Universal将跳过的函数,则将这行代码放在函数体的顶部。

if (typeof window === "undefined") return;

或者,如果您有一个场景需要服务器以与客户端不同的方式执行此操作

if (typeof window === "undefined") {
    // server code
} else {
   // client code
};

答案 1 :(得分:0)

Angular Universal有两个常量isNode& IsBrowser

if(isNode){

   // it's Node Server

} else {
  //it's Browser
}