我已经看过很多关于在 Angular 通用应用程序中为客户端缓存数据的文章,因此它不会重复客户端上已经在服务器上解析的请求。
我只是不明白数据是如何从服务器传输到客户端的。我是否将 JSON 注入到预渲染的 HTML 中,还是我遗漏了其他内容?
我已经看过很多关于在 Angular 通用应用程序中为客户端缓存数据的文章,因此它不会重复客户端上已经在服务器上解析的请求。
我只是不明白数据是如何从服务器传输到客户端的。我是否将 JSON 注入到预渲染的 HTML 中,还是我遗漏了其他内容?
从 angular 5 开始,在 angular core 中有一个名为的模块TransferStateModule
可以为您执行此操作。https://angular.io/api/platform-browser/TransferState
您只需将 API 响应与 StateKey(基本上就像一个字符串)一起添加到服务器端的缓存中,它会在 index.html 文件发送到客户端之前以 Json 的形式写入 DOM,在那里您需要 StateKey 和从 Json 中获取结果。
在官方 Universal Starter Kit 中,您可以查看注册地点和内容: https ://github.com/angular/universal-starter
更新 Angular 6
您不需要自己设置 State 键。新的 TransferStateModule 有一个自动设置键的 HttpClient 拦截器!如果您想拥有更多控制权,您仍然可以自己做,但现在就像添加模块一样简单(最新的通用入门套件默认导入它!)