渐进式网络应用程序(progressive web application - PWA)在离线时给用户以原生app体验

本文介绍了如何在Web应用中使用Workbox插件来处理网络中断情况,包括安装workbox-webpack-plugin,配置ServiceWorkers以实现离线功能,以及解决Webpack打包后ServiceWorker注册问题的方法。
摘要由CSDN通过智能技术生成

Web应用在网络断开时可以借助Workbox插件来使应用程序能够继续运行功能。

1. 安装 workbox-webpack-plugin插件:

    npm install workbox-webpack-plugin --save-dev

2. 配置文件中声明并在plugins中初始化该插件:

const WorkboxPlugin = require('workbox-webpack-plugin');



plugins: [
        new WorkboxPlugin.GenerateSW({
            // 这些选项帮助快速启用 ServiceWorkers
            // 不允许遗留任何“旧的” ServiceWorkers
            clientsClaim: true,
            skipWaiting: true,
        }),
]

3. 在主js文件中注册service worker

//注册 Service Worker 完成安装、配置workbox插件后还需要注册service worker
//因为兼容性问题,先做判断,存在service worker才用
//只是这样配置还会有问题,因为我们的网页打包后在dist目录,但浏览器会在根目录下找寻service worker
//因此需要安装serve静态资源服务器
if ('serviceWorker' in navigator) {
    window.addEventListener('load', () => {
        navigator.serviceWorker.register('/service-worker.js').then(registration => {
            console.log('SW registered: ', registration);
        }).catch(registrationError => {
            console.log('SW registration failed: ', registrationError);
        });
    });
}

4. 需要注意的是,Webpack打包的输出文件往往在dist目录下,这样在注册serviceWorker时会失败,可以全局安装一个静态资源服务器,在相应的目录下启动服务器,就可以离线使用web app:

 npm i serve -g

serve dist

配置完成

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值