创建反应应用时,默认情况下会调用服务工作者。为何使用服务工作者?默认调用的原因是什么?
答案 0 :(得分:48)
您的应用程序可能不需要服务工作者。如果您使用create-react-app创建项目,则默认情况下会调用它
this 文章详细解释了服务工作者。总结一下
service worker
是您的浏览器在其中运行的脚本 背景,与网页分开,打开功能的大门 不需要网页或用户交互。今天,他们已经 包括push notifications
和background sync
等功能ability to intercept and handle network requests
,包括programmatically managing a cache of responses
。将来,服务人员可能会支持其他类似的事情
periodic sync
或geofencing
。
使用create-react-app via引入了
Service workers
SWPrecacheWebpackPlugin
。使用具有缓存优先策略的服务器工作程序可提供性能 优势,因为网络不再是履行的瓶颈 导航请求。然而,它确实意味着开发人员(和 用户)只能看到部署的更新只能在“N + 1”上看到 访问页面,因为以前缓存的资源在更新中 背景
默认情况下,在新应用中启用对register service worker
的调用,但您可以随时将其删除,然后又恢复正常行为。
答案 1 :(得分:18)
简而言之,这是一个脚本,浏览器在后台运行,与网页或DOM没有任何关系,并提供开箱即用的功能。它还可以帮助您缓存资产和其他文件,以便在用户脱机或网络速度较慢时。
其中一些功能是代理网络请求,推送通知和后台同步。服务人员确保用户拥有丰富的离线体验。
您可以将服务人员视为坐在客户端和服务器之间的人,并且向服务器发出的所有请求都将通过服务人员。基本上是一个中间人。由于所有请求都通过服务工作者,因此它能够即时拦截这些请求。
答案 2 :(得分:6)
我想补充有关服务人员的两个重要注意事项:
服务人员需要HTTPS。但是要启用本地测试,此限制不适用于localhost
。这是出于安全原因,因为服务工作者的行为就像Web应用程序和服务器之间的中间人 一样。
使用创建React App ,仅在生产环境中启用Service Worker,例如在运行npm run build
时。
服务人员在这里可以帮助开发Progressive Web App。可以在他们的网站here中找到关于Create React App的很好的资源。