serviceworker
方案已集成到webpack-plugins
,源码请参考: serviceworker-webpack-plugins
- 下载到本地
$ git clone [email protected]:yang657850144/serviceworker.git
-
npm install
-
执行
npm run server
通过了解生命周期,进行创建
service worker
,。
- 注册 (
register
) - 安装 (
install
) - 激活 (
activate
)
通常使用
service worker
只需要以下几个步骤:
- 检测是否支持
serivceworker
首先,检测当前环境是否支持
service worker
,可以使用'serviceWorker' in navigator
进行检测。
- 注册
如果支持,可以使用
navigator.serviceWorker.register('./sw.js')
,在当前主线程中注册service worker
。如果注册成功,service worker
则在ServiceWorkerGlobalScope
环境中运行; 需要注意的是: 当前环境无法操作DOM
,且和主线程之间相互独立(即线程之间不会相互阻塞)。
- 安装
然后,后台开始安装
service worker
,一般在此过程中,开始缓存一些静态资源文件。
- 激活
安装成功之后,准备进行激活
service worker
,通常在激活状态下,主要进行缓存清理,更新service worker
等操作。
- 使用
激活成功后,,
service worker
就可以控制当前页面了。需要注意的是,只有在service worker
成功激活后,才具有控制页面的能力,一般在第一次访问页面时,service worker
第一次创建成功,并没有激活,只有当刷新页面,再次访问之后,才具有控制页面的能力。