什么是服务工作者反应js

时间:2018-03-16 06:22:12

标签: javascript reactjs service-worker

创建反应应用时,默认情况下会调用服务工作者。为何使用服务工作者?默认调用的原因是什么?

3 个答案:

答案 0 :(得分:48)

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

this 文章详细解释了服务工作者。总结一下

  

service worker是您的浏览器在其中运行的脚本   背景,与网页分开,打开功能的大门   不需要网页或用户交互。今天,他们已经   包括push notificationsbackground sync等功能   ability to intercept and handle network requests,包括   programmatically managing a cache of responses

     

将来,服务人员可能会支持其他类似的事情   periodic syncgeofencing

根据 PR to create-react-app

  使用create-react-app via引入了

Service workers   SWPrecacheWebpackPlugin

     

使用具有缓存优先策略的服务器工作程序可提供性能   优势,因为网络不再是履行的瓶颈   导航请求。然而,它确实意味着开发人员(和   用户)只能看到部署的更新只能在“N + 1”上看到   访问页面,因为以前缓存的资源在更新中   背景

默认情况下,在新应用中启用对register service worker的调用,但您可以随时将其删除,然后又恢复正常行为。

答案 1 :(得分:18)

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

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

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

enter image description here

答案 2 :(得分:6)

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

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

  2. 使用创建React App ,仅在生产环境中启用Service Worker,例如在运行npm run build时。

服务人员在这里可以帮助开发Progressive Web App。可以在他们的网站here中找到关于Create React App的很好的资源。