reactjs - 我应该在 React 生产中使用 registerServiceWorker 吗?

标签 reactjs service-worker create-react-app production

当您使用 create-react-app 引导您的 React 应用程序时有一个名为 registerServiceWorker.js 的文件被导入并在 index.js 中用作:

import React from 'react'
import ReactDOM from 'react-dom'
import App from 'App'
import registerServiceWorker from 'registerServiceWorker'

ReactDOM.render(<App />, document.getElementById('root'))
registerServiceWorker()

官方的 create-react-app 文档建议将此 service worker 保留在生产环境中并说:

By default, it also includes a service worker so that your app loads from local cache on future visits.

An stackoverflow question也有相同的建议。

但是还有this medium article它说不要将它与默认配置一起使用:

Turn off service workers

If you’ve used something like create-react-app to bootstrap your project, you’ll want to turn off the built-in service worker if you haven’t specifically integrated it to work with your app. While usually harmless, it can cause some issues, so it’s best to just get rid of it up front

由于我无法配置服务 worker (React 新手),我是否应该在生产中使用 registerServiceWorker

此外,如果我的 React 应用程序是一个基于交互式身份验证的应用程序(不知何故使其离线无用),我还需要它吗?

最佳答案

registerServiceWorker 是一个 JavaScript 文件,用于缓存应用程序的某些 Assets 。这不仅可以创建离线可用性,还可以提高您网站的性能。我不确定如果您将其保留(可能没有)会出现什么问题,但如果您的网站如此复杂,您可能需要考虑创建一个自定义服务 worker 。

所以不,如果您的应用离线无用,则 registerServiceWorker 不是必需的,尽管它会影响性能。无论如何,我的建议是注册一个响应代码(除非它已经返回 503)并放置某种登陆页面,告诉用户他们需要互联网连接,如果您还没有的话。

关于reactjs - 我应该在 React 生产中使用 registerServiceWorker 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51609117/

相关文章:

reactjs - 如何获取renderHook的返回值

javascript - 我如何将数据存储在可从任何地方访问的 nextjs 中

javascript - 在 ReactJS 中定义函数时,仅在括号内使用括号和花括号有什么区别?

javascript - 中止错误: Failed to register a ServiceWorker: ServiceWorker cannot be started

javascript - 将字符串附加到 Service Worker 中的用户代理

create-react-app - 如何在 Create-React-App 2 中更改 PWA 工作箱缓存策略

reactjs - yarn 安装错误:Failed to download Chromium

authentication - 如何要求 Service Worker 忽略与 Polymer 中特定 URL 模式匹配的请求?

javascript - create-react-app 正在显示我所有的生产代码,如何隐藏它?

reactjs - 让 Storybook react-docgen-typescript-loader 使用 typescript Prop