Search code examples
javascriptnode.jsvue.jsvuejs2progressive-web-apps

How to convert Vue 2 web site to PWA wab app?


I have checked PWA function when use vue 3 but there aren't in vue 2. so if you have good idea to convert from vue 2 project to pwa, please share. Thanks.


Solution

  • I found answer for my question. I will share it for all developers.

    First, I have done follow this this vue/cli-plugin-pwa

    Second: make registerServiceWorker.js file with this code:

    /* eslint-disable no-console */
    
    import { register } from 'register-service-worker'
    
    if (process.env.NODE_ENV === 'production') {
      register(`${process.env.BASE_URL}service-worker.js`, {
        ready () {
          console.log(
            'App is being served from cache by a service worker.\n'
          )
        },
        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.')
        },
        offline () {
          console.log('No internet connection found. App is running in offline mode.')
        },
        error (error) {
          console.error('Error during service worker registration:', error)
        }
      })
    }
    

    Third: make service-worker.js:

    // inside src/service-worker.js 
    
    // define a prefix for your cache names. It is recommended to use your project name
    workbox.core.setCacheNameDetails({prefix:  "simple-vue-project"});
    
    // Start of Precaching##########################
    // __precacheManifest is the list of resources you want to precache. This list will be generated and imported automatically by workbox during build time
    self.__precacheManifest = [].concat(self.__precacheManifest || []);
    workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
    // End of Precaching############################
    
    // Start of CachFirst Strategy##################
    // all the api request which matchs the following pattern will use CacheFirst strategy for caching
    workbox.routing.registerRoute(
    /http:\/\/get\.geojs\.io\/v1\/ip\/country\.json/,
    new  workbox.strategies.CacheFirst()
    );
    // End of CachFirst Strategy####################