Angular 通用 + 外部 API

2024-01-09

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

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

  1. Angular Universal 显然需要来自 API 服务器的数据来预渲染页面。我不想每次请求 Web 应用程序 HTML 时都从 NodeJS 查询 API 服务器。如果 NodeJS 服务器的“行为”与一个客户端 Web 应用程序实例完全相同,并且也每 10 秒查询一次 API 服务器,以 10 秒的间隔“缓存”此数据并使用它来渲染 HTML,那就足够了。
  2. 客户端 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(使用前将#替换为@)

Angular 通用 + 外部 API 的相关文章

随机推荐

  • MassTransit 与 RabbitMQ:消息何时移至错误队列

    我正在使用 RabbitMQ 版本 3 0 2 我在错误队列中看到接近 1000 条消息 我想知道 消息在什么时候被移至错误队列 有没有办法知道为什么某个消息被移动到错误队列 有什么方法可以将消息从错误队列移动到正常队列吗 谢谢 a 无法反
  • 为什么我应该在这个程序中使用 fflush(stdin) ?

    我知道它是用来清理键盘缓冲区的 但是我不明白何时 为什么需要使用它或者我是否真的需要 例如 在我为班级编写的这段代码中 只有当我输入fflush stdin 之后立即进入主函数while 我只知道这一点 因为教授在我向他展示错误后告诉我这样
  • Eclipse 隐形编辑器

    我有日食朱诺 我不知道如何 但我在 Eclipse 中的编辑器现在是 隐形的 我所说的不可见是指编辑器窗格不在可见窗口中 我不是 Eclipse 的新手 我知道您可以最小化编辑器或最大化不同的面板 但事实并非如此 编辑器所在的空白区域甚至没
  • @import 与 #import - iOS 7

    我正在尝试一些新的 iOS 7 功能 并使用 WWDC 视频 在 iOS 上实现引人入胜的 UI 中讨论的一些图像效果 为了在会话的源代码中产生模糊效果 UIImage通过导入 UIKit 的类别进行扩展 如下所示 import UIKit
  • 如何借用字段进行序列化但在反序列化时创建它?

    我有一个这样的结构 derive Serialize Deserialize struct Thing pub small header Header pub big body Body 我想把这个连载Thing通过网络发送 我已经有一个B
  • 在 Eclipse 文本编辑器中,如何将段落重新格式化/填充/对齐为 80 个字符宽?

    在 Eclipse 中编辑文本文件 例如 README 文件 时 我还没有找到一种方法让编辑器重新格式化文本段落 以便它们适合合理的宽度 通常为 80 个字符 这看起来应该是一件很平常想做的事情 但是我还没有找到 有人可以帮忙吗 请注意 我
  • Android - 两个设备之间的通信

    安装在两台设备上的 Android 应用程序相互通信的最佳方式是什么 设备可以直接连接而不使用短信吗 根据您的要求和设置 您有多种选择 如果您的设备彼此距离非常近 最多约 10 米 您可以按照 Derek 的建议使用蓝牙进行通信 如果您的设
  • jQuery - 等待函数返回值

    我有一个 jquery 函数 用于使用 ajax 请求发送电子邮件 function sendMail from to subject message var datastr from from to to subject subject
  • Java 中 PKCS#5 PBKDF1 的算法名称是什么?

    我在使用密码学方面有几个问题 我正在使用 AES 问题一 我正在尝试使用SecretKeyFactory班级在 我正在尝试获取与 PBKDF1 PKCS 5 相关的实例 我是密码学新手 我在网上尝试过 但找不到任何此类算法 确实支持 我想要
  • 脚本文件与命令行:rsync 和 --exclude

    我有一个简单的测试 bash 脚本 如下所示 bin bash cmd rsync rv exclude dir new cmd execute command 当我运行脚本时 它还会复制以 尽管我本想排除他们 当我直接从命令行运行相同的
  • 如何通过滑动动画以编程方式在 FlipView 中导航

    Windows 开发中心声明UseTouchAnimationsForAllNavigation财产 XAML FlipView 控件支持三种导航模式 基于触摸 基于按钮和程序化 当用户通过触摸导航时 FlipView 项目会平滑地滚动到视
  • sql注入场景中格式化函数与参数?

    我知道 sql 语句中参数的使用 但出于好奇 使用 Format 函数来防止 sql 注入而不是使用参数是安全的 像这个样本 sCustomer string begin AdoSql CommandText Format Select S
  • 故障排除“运行时编译器未加载”

    使用以下命令构建 Angular2 应用程序后 出现以下运行时错误 prod flag 运行时编译器未加载 据我了解 生产版本使用 AoT 并且在此场景中不支持运行时编译 我的问题是 我不知道我正在做的任何事情都需要运行时编译器 它甚至可能
  • 连接空间数据时如何解决球面几何故障

    我有一个形状文件 带有多个多边形 和一个带有坐标的数据框 我想将数据框中的每个坐标分配给形状文件中的多边形 因此 要在数据框中添加具有多边形名称或 ID 的列 这里是链接到数据 https docs google com spreadshe
  • 如何读取程序加载解决方案一部分的文件?

    我正在编写一个 C WinForms 应用程序 该应用程序的组件之一是 SQLite 数据库 如果用户第一次运行该程序 该程序应该在用户的主目录中创建必要的文件夹和文件 即数据库文件 效果很好 不过 还需要建立数据库 即需要添加表 我有一个
  • 不确定的 NSProgressIndicator 将不会动画

    所以我有一个简单的用户界面 一个 开始 按钮 一些文本 标签和一个进度栏 单击 开始 按钮时 NSProgressIndicatorshould动画 这是我的代码 synthesize progressBar progressBar Som
  • Turtle 模块 - 保存图像

    我想弄清楚如何在使用 python 的海龟模块创建绘图后保存位图或矢量图形图像 经过一番谷歌搜索后 我找不到简单的答案 我确实找到了一个名为画布2svg http wm ite pl proj canvas2svg index html 但
  • 为什么 Array.IndexOf 不像 List 那样检查 IEquatable ?

    考虑this https dotnetfiddle net RVgvG0 code public static void Main var item new Item Id 1 IList list new List
  • BeautifulSoup 找不到正确解析的元素

    我在用BeautifulSoup解析一堆可能非常脏的HTML文件 我偶然发现了一件非常奇怪的事情 HTML 来自这个页面 http www wvdnr gov http www wvdnr gov 它包含多个错误 例如多个
  • Angular 通用 + 外部 API

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