Reactjs 兼容时如何启用react service worker?
我一直在使用React JS服务人员,它可以帮助用户更快地加载内容。但我也收到了一些用户的投诉,他们有旧手机(安卓7.0、安卓5.0等),他们在访问时看到一个空白/陈旧的页面。我意识到服务人员的兼容性可能没有我想象的那么好。在打开service worker之前,似乎不可能添加自定义兼容性检查Reactjs 兼容时如何启用react service worker?,reactjs,Reactjs,我一直在使用React JS服务人员,它可以帮助用户更快地加载内容。但我也收到了一些用户的投诉,他们有旧手机(安卓7.0、安卓5.0等),他们在访问时看到一个空白/陈旧的页面。我意识到服务人员的兼容性可能没有我想象的那么好。在打开service worker之前,似乎不可能添加自定义兼容性检查 在注册service worker之前,是否有方法在浏览器中检查对service worker的支持?您可以有条件地在浏览器中检查service worker支持,并相应地注册service worker
在注册service worker之前,是否有方法在浏览器中检查对service worker的支持?您可以有条件地在浏览器中检查service worker支持,并相应地注册service worker:
if ('serviceWorker' in navigator) {
serviceWorker.register();
}
为了使事情防弹,您甚至可以检查ServiceWorker
对象是否存在
if ('serviceWorker' in navigator && !!ServiceWorker) {
serviceWorker.register();
}
让我知道我的答案是否适用于您。谢谢,另外一个问题是
serviceWorker.unregister()
做什么?是否需要向注销serviceWorker添加else
语句?我的假设是,这里的serviceWorker是一个react功能,它与navigator不同。serviceWorker
@AeroWang您可以注册或注销service Worker,两者都需要API处于活动状态。我明白了。因此,我认为更好的做法是在不兼容时不注册(而不是取消注册)。因此,既然导航器中的process.env.NODE\u env==='production'&&&serviceWorker'已经在serviceWorker.js中,我是否注册也不重要,但似乎一旦注册,我的应用程序就会崩溃,为什么?@AeroWang这很奇怪。这不应该发生。给我一点时间,我要在我的虚拟机上试试这个东西。我很快会给你回复的。