6

我想更好地理解实现离线友好的 webapps 的选项,我在这里阅读了这篇文章:https ://angular.io/guide/http也谈到了 angular 的拦截器。

现在我有点疑惑:

一方面我们有服务工作者(浏览器尚未完全支持),这将有助于实现离线优先/友好的应用程序,另一方面我们有这个强大的工具 - 拦截器 - 它可以做很多事情来帮助应用程序更好地处理不良或无连接环境。

那么对这两者之间的区别有清楚的了解吗?什么时候用一个,什么时候用另一个?

4

1 回答 1

9

HttpClient拦截器和服务工作者是不同的层。

HttpClient拦截器仅处理HttpClient在特定 Angular 应用程序中由提供者执行的请求。

服务工作者处理在浏览器窗口中执行的所有请求,包括页面本身、资产和 AJAX(XHRFetch)请求。

它们唯一的常见用途是HttpClient对远程 API 的请求。

由于 API 请求可以在 Angular 应用程序的不同位置处理,因此由开发人员决定哪一个合适。服务工作者、HttpClient拦截器或使用HttpClient.

考虑到一个问题可以通过多种方式解决,并且浏览器支持很重要,Service Workers 不会是首选。如果一个问题不能单独解决HttpClient或解决方案不切实际,这是服务人员的工作。例如,当二进制文件更合适时,使用 AJAX 传输 base64 图像。

服务工作者不阻塞主线程这一事实也可能是一个主要问题。

于 2018-01-05T16:25:13.870 回答