Angular 通用启动器:服务 TransferState 的目的是什么?

Angular universal starter: Wha't the purpose of the service TransferState?

我不得不承认,我不明白 Angular universal starter 应用程序 (https://github.com/angular/universal-starter) 中服务 TransferState 的目的和目标。

我猜它是为了在客户端和服务器之间共享数据,但我不确定在哪种情况下适用或应该应用。

是否有人理解并能用一个简单的例子向我解释其目的?

提前致谢

TransferState 当前未在 https://universal.angular.io/api/universal/index.html#typedoc-main-index 中列出,这可能表明该功能正在开发中且不打算使用,它不打算直接使用(例如从图书馆本身),或者它可能是一个简单的遗漏,或者可能由于其他原因被排除在外...

但是,在查看 TransferState 的代码时,它似乎非常稀疏,除了:

https://github.com/angular/universal-starter/blob/master/src/modules/transfer-state/server-transfer-state.ts

https://github.com/angular/universal-starter/blob/master/src/modules/transfer-state/transfer-state.ts

此处的主要线索似乎是在服务器文件中包含 import * as serialize from 'serialize-javascript';,以及许多不同的 .map 语句,以及关于文件用途的其他提示。

从粗略的检查来看,它似乎只是一小段代码,用于将一个文件或io类型的状态转换为另一个。例如代码:

toJson(): any {
    const obj = {};
    Array.from(this.keys())
      .forEach(key => {
        obj[key] = this.get(key);
      });
    return obj;
  }

transfer-state.ts 文件中。应该可以像这样调用这个函数:

myFile.transferState.toJson();

为了将给定输入的状态传输到 JSON 数据中。这似乎是许多预先存在的功能的重复,这也可能是它未在文档中列出的原因。

GitHub Issue answering your question.

我有两个猜测。

  1. Universal Gotchas 中的第三个要点 - 提到的示例可能是 TransferModule
  2. Preboot.js 增强功能,因为它现在不支持 API 调用