webpack3 + vue 添加 serviceWorker

摘要:
ConstSWPrecheWebpackPlugin=require('sw cache webpack plugin')constWebpackPwaManifest=require('webpack pwa manifest')外接程序插件:'服务工作者。js','dist/'}),

新的vue脚手架已经可以自带pwa了,本文主要针对旧版的webpack。

先装三个插件:

$npm i register-service-worker sw-precache-webpack-plugin webpack-pwa-manifest --save-dev

因为pwa主要用于生产,我们来动手改造 build/webpack.prod.conf.js,

首先在头部引入两个插件:

const SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin')
const WebpackPwaManifest = require('webpack-pwa-manifest')

在 plugins 加入:

plugins: [
    new SWPrecacheWebpackPlugin({
      cacheId: 'my-project-name',
      filename: 'service-worker.js',
      staticFileGlobs: ['dist/**/*.{js,html,css}'],
      minify: true,
      stripPrefix: 'dist/'
    }),
new WebpackPwaManifest({ name:
'My Progressive Web App', short_name: 'MyPWA', description: 'My awesome Progressive Web App!', background_color: '#ffffff', crossorigin: 'use-credentials', //can be null, use-credentials or anonymous icons: [ { src: path.resolve('src/assets/icon.png'), sizes: [96, 128, 192, 256, 384, 512] // multiple sizes }, { src: path.resolve('src/assets/large-icon.png'), size: '1024x1024' // you can also use the specifications pattern } ] }),
// ...
]

这个时候打包出来的代码根目录里面多了个 service-worker.js ,html文件里面 pwa 相关元素也加上了。

添加一个文件用来注册 serviceWorker,(眼熟吗?抄的vue-cli 3 ^_^)

// serviceWorker.js
import { register } from 'register-service-worker'

if (process.env.NODE_ENV === 'production') {
  register('service-worker.js', {
    ready () {
      console.log(
        'App is being served from cache by a service worker.'
      )
    },
    registered () {
      console.log('Service worker has been registered.')
    },
    cached () {
      console.log('Content has been cached for offline use.')
    },
    updatefound () {
      console.log('New content is downloading.')
    },
    updated () {
      console.log('New content is available; please refresh.')
      window.location.reload(true)   // 这里需要刷新页面
    },
    offline () {
      console.log('No internet connection found. App is running in offline mode.')
    },
    error (error) {
      console.error('Error during service worker registration:', error)
    }
  })
}

在入口 main.js 引入该文件:

import './serviceWorker'

至此,改造完成。

免责声明:文章转载自《webpack3 + vue 添加 serviceWorker》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C语言结构体指针(指向结构体的指针)详解OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000005C8ECFFA80 处。”的异常下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python之数据类型详解

         python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort 1 s1=['a','b','zz','1','!'] 2 # s1.sort() 3 # print(s1) -->['!', '1', 'a', 'b', 'zz'] 列表排序,特殊字符不准,数字第一,字母第二,汉字第三 c...

hbase1.3.1安装

下载:    hadoop@master:~$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz解压到/opt/Hadoop,    hadoop@master:~$ sudo tar -zxvf hbase-1.3.1-bin.tar.g...

JS事件 文本框内容改变事件(onchange)通过改变文本框的内容来触发onchange事件,同时执行被调用的程序。

文本框内容改变事件(onchange) 通过改变文本框的内容来触发onchange事件,同时执行被调用的程序。 如下代码,当用户将文本框内的文字改变后,弹出对话框“您改变了文本内容!”。 运行结果:   任务 补充右边编辑器第13行,实现改变文本框内容时,调用message()函数,弹出对话框“您改变了文本内容!”。 <...

Vue教程:组件Component详解(六)

一.什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以表现为用 is 特性进行了扩展的原生 HTML 元素。 所有的 Vue 组件同时也都是 Vue 的实例,所以可接受相同的选项对象...

mif文件生成方法

mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据。常见生成方法: Quartus自带的mif编辑器生成 mif软件生成 高级编程语言生成 前两种方法都有一定的缺陷,主要介绍第三种方法,按照mif文件格式,使用高级编程语言(Matlab、C)编写生成。 注意: mif文件都是ASCⅡ码...

执行js-----Selenium快速入门(十四)

  Selenium能够执行js,这使得Selenium拥有更为强大的能力。既然能执行js,那么js能做的事,Selenium应该大部分也能做。这应该得益于JavascriptExecutor这个接口,而ChromeDriver, EdgeDriver, EventFiringWebDriver, FirefoxDriver, InternetExplor...