到目前为止,我一直在使用importScripts
将外部依赖项导入到我的服务工作者中。但现在我在我的两个依赖项的文档中看到,要使用它们的最新版本,我应该使用import
语句:
- Firebase云消息
- 谷歌工具箱
我看到的其他地方(在SO上或通过谷歌搜索(都说在service worker中使用importScripts
。那么我是不是错过了什么?
我正在使用Webpack作为bundler。
在某些浏览器中,可以使用运行时ES模块导入将附加代码拉入ServiceWorkerGlobalScope
。缺乏通用的浏览器支持意味着你可能很难完全依赖它。
正因为如此,做两件事中的一件仍然很常见:
-
使用ES模块导入作为打包程序(如Rollup/webpack/ebuild(的构建时间信号,将代码包含在最终在浏览器中运行的服务工作程序包中。这就是文档(例如Workbox(引导人们走向的方向,并包括的示例。这种方法意味着bundler可以消除那些最终没有从导入的Workbox包中引用的代码。
-
和以前一样使用
importScripts()
。Workbox仍然支持这一点,尽管它不是首选方法。