什么是React JS中的Service Worker


93

创建React应用时,默认情况下会调用Service Worker。为什么要使用服务人员?默认调用的原因是什么?

Answers:


104

您的应用程序可能不需要服务人员。如果要使用create-react-app创建项目,则默认情况下会调用该项目

服务人员在很好的解释这个文章。总结一下

Aservice worker是一种脚本,您的浏览器在后台运行,与网页分开,从而为不需要网页或用户交互的功能打开了大门。如今,它们已经包含了诸如push notificationsbackground sync和具有的功能 ability to intercept and handle network requests,包括 programmatically managing a cache of responses

将来,服务人员可能会支持诸如periodic sync或的其他功能 geofencing

根据此PR创建反应应用

Service workers通过create-react-app引入 SWPrecacheWebpackPlugin

由于网络不再是满足导航请求的瓶颈,因此使用具有缓存优先策略的服务器工作者可以提供性能优势。但是,这的确意味着开发人员(和用户)在访问页面的“ N + 1”次访问中只会看到部署的更新,因为先前缓存的资源是在后台更新的。

register service worker在新应用中,默认情况下会启用对的调用,但是您始终可以将其删除,然后恢复正常状态。


2
至于现在生成的reactjs应用程序具有sw代码,但注释指出未调用register函数。所以问题是我在哪里可以打电话呢?
Daneel Yaitskov

@ DaneelS.Yaitskov,您可以在顶级index.js文件或类似文件中调用它。
悉达多

1
@Siddhartha您能否足够友善地举一个具体的例子,也许可以更新答案?我发现这非常有用,但缺少这些最终细节。谢谢。
Ted Stresen-Reuter

17

简而言之,它是浏览器在后台运行的脚本,与网页或DOM没有任何关系,并提供开箱即用的功能。它还可以帮助您缓存资产和其他文件,以便在用户脱机或网络速度较慢时使用。

其中一些功能是代理网络请求,推送通知和后台同步。服务人员可确保用户拥有丰富的离线体验。

您可以将服务人员视为坐在客户端和服务器之间的人,并且对服务器的所有请求都将通过服务人员传递。基本上是一个中间人。由于所有请求都通过服务工作者,因此它能够即时拦截这些请求。

在此处输入图片说明


6

我想补充有关服务人员的两个重要注意事项:

  1. 服务人员需要HTTPS。但是要启用本地测试,此限制不适用于localhost。这是出于安全原因,因为服务工作者在Web应用程序和服务器之间的中间位置就像一个

  2. 使用Create React App Service Worker只能在生产环境中启用,例如运行时npm run build

服务工作者在这里帮助开发渐进式Web应用程序。在Create React App的上下文中可以找到很好的资源,可以在他们的网站上找到

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.