欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

3分鐘搞定vite項目(vue/react)使用vite-plugin-pwa配置為pwa應用

 更新時間:2024年02月03日 10:34:46   作者:1024小神  
這篇文章主要介紹了3分鐘搞定vite項目(vue/react)使用vite-plugin-pwa配置為pwa應用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

將項目配置為pwa模式,就可以在瀏覽器里面看到安裝應用的選項,并且可以將web網(wǎng)頁像app一樣添加到手機桌面或者pad桌面上,或者是電腦桌面上,這樣帶來的體驗就像真的在一個app上運行一樣。為了實現(xiàn)這個目的,我們可以為vue項目使用一個插件:vite-plugin-pwa

vite-plugin-pwa倉庫地址:https://github.com/vite-pwa/vite-plugin-pwa

vite-plugin-pwa文檔地址:Getting Started | Guide | Vite PWA 

安裝插件

直接使用npm安裝即可

npm i vite-plugin-pwa -D 
# yarn 
yarn add vite-plugin-pwa -D
# pnpm 
pnpm add vite-plugin-pwa -D

配置插件

先有一個pwa應用的圖標,最好是png格式的,尺寸最好大于192x192的:

在vite.config.js/ts中配置pwa應用:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import { VitePWA } from 'vite-plugin-pwa'
// 生產(chǎn)還是開發(fā)
const mode = 'production'
// https://vitejs.dev/config/
export default defineConfig({
    plugins: [
        vue(),
        VitePWA({
            mode: 'development',
            base: '/',
            manifest: {
                name: '應用名稱',
                short_name: '應用名稱',
                description: '應用描述',
                icons: [
                    //添加圖標, 注意路徑和圖像像素正確
                    {
                        src: './public/app.png',
                        sizes: '1024x1024',
                        type: 'image/png',
                    },
                ],
            },
            registerType: 'autoUpdate',
            workbox: {
                globPatterns: ['**/*.{js,css,html,ico,png,jpg,svg}'], //緩存相關靜態(tài)資源
                runtimeCaching: [
                    // 配置自定義運行時緩存
                    mode !== 'production'
                        ? {
                              urlPattern: ({ url }) =>
                                  url.origin === 'https://app-api-0.com',
                              handler: 'NetworkFirst',
                              options: {
                                  cacheName: 'wisbayar-api',
                                  cacheableResponse: {
                                      statuses: [200],
                                  },
                              },
                          }
                        : {
                              urlPattern: ({ url }) =>
                                  url.origin === 'https://app-api.id',
                              handler: 'NetworkFirst',
                              options: {
                                  cacheName: 'wisbayar-api',
                                  cacheableResponse: {
                                      statuses: [200],
                                  },
                              },
                          },
                    {
                        urlPattern: /\.(?:png|jpg|jpeg|svg)$/,
                        handler: 'CacheFirst',
                        options: {
                            cacheName: 'wisbayar-images',
                            expiration: {
                                // 最多30個圖
                                maxEntries: 30,
                            },
                        },
                    },
                    {
                        urlPattern: /.*\.js.*/,
                        handler: 'StaleWhileRevalidate',
                        options: {
                            cacheName: 'wisbayar-js',
                            expiration: {
                                maxEntries: 30, // 最多緩存30個,超過的按照LRU原則刪除
                                maxAgeSeconds: 30 * 24 * 60 * 60,
                            },
                            cacheableResponse: {
                                statuses: [200],
                            },
                        },
                    },
                    {
                        urlPattern: /.*\.css.*/,
                        handler: 'StaleWhileRevalidate',
                        options: {
                            cacheName: 'wisbayar-css',
                            expiration: {
                                maxEntries: 20,
                                maxAgeSeconds: 30 * 24 * 60 * 60,
                            },
                            cacheableResponse: {
                                statuses: [200],
                            },
                        },
                    },
                    {
                        urlPattern: /.*\.html.*/,
                        handler: 'StaleWhileRevalidate',
                        options: {
                            cacheName: 'wisbayar-html',
                            expiration: {
                                maxEntries: 20,
                                maxAgeSeconds: 30 * 24 * 60 * 60,
                            },
                            cacheableResponse: {
                                statuses: [200],
                            },
                        },
                    },
                ],
            },
            devOptions: {
                enabled: true,
            },
        }),
    ],
    server: {
        host: '0.0.0.0',
    },
    resolve: {
        alias: {
            '@': path.resolve(__dirname, 'src'),
        },
    },
})

測試上線

然后重新運行項目,就可以看到瀏覽器頁面上有標識可以安裝了:

如果想判斷頁面是不是在pwa中打開的,可以嘗試使用:

    const isInStandaloneMode = () =>
        (window.matchMedia('(display-mode: standalone)').matches) || (window.navigator.standalone) || document.referrer.includes('android-app://');
    if (isInStandaloneMode()) {
        document.body.innerHTML = "是在pwa中打開的"
    }else {
        document.body.innerHTML = "請在pwa中打開"
    }

到此這篇關于3分鐘搞定vite項目(vue/react)使用vite-plugin-pwa配置為pwa應用的文章就介紹到這了,更多相關vite項目使用vite-plugin-pwa配置為pwa內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue通過定時器實現(xiàn)垂直滾動公告

    vue通過定時器實現(xiàn)垂直滾動公告

    這篇文章主要為大家詳細介紹了vue通過定時器實現(xiàn)垂直滾動公告,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 在vue中實現(xiàn)嵌套頁面(iframe)

    在vue中實現(xiàn)嵌套頁面(iframe)

    這篇文章主要介紹了在vue中實現(xiàn)嵌套頁面(iframe),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 淺談vue-router2路由參數(shù)注意的問題

    淺談vue-router2路由參數(shù)注意的問題

    下面小編就為大家?guī)硪黄獪\談vue-router2路由參數(shù)注意的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Vue側滑菜單組件——DrawerLayout

    Vue側滑菜單組件——DrawerLayout

    本文介紹一個簡單的DrawerLayout(類似Android的DrawerLayout)布局組件的實現(xiàn),基于Vue.js側滑菜單組件的實現(xiàn)代碼大家通過本文一起學習吧
    2017-12-12
  • Vue CLI 2.x搭建vue(目錄最全分析)

    Vue CLI 2.x搭建vue(目錄最全分析)

    這篇文章主要介紹了Vue CLI 2.x搭建vue(目錄最全分析),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • vue 中的 render 函數(shù)作用詳解

    vue 中的 render 函數(shù)作用詳解

    這篇文章主要介紹了vue 中的 render 函數(shù)作用,通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • vue.js?Table?組件自定義列寬實現(xiàn)核心方法

    vue.js?Table?組件自定義列寬實現(xiàn)核心方法

    這篇文章主要介紹了vue.js?Table?組件自定義列寬實現(xiàn)核心方法,文圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Nuxt.js踩坑總結分享

    Nuxt.js踩坑總結分享

    本篇文章主要介紹了Nuxt.js踩坑總結分享,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Element-ui el-tree新增和刪除節(jié)點后如何刷新tree的實例

    Element-ui el-tree新增和刪除節(jié)點后如何刷新tree的實例

    這篇文章主要介紹了Element-ui el-tree新增和刪除節(jié)點后如何刷新tree的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue video和vue-video-player實現(xiàn)視頻鋪滿教程

    vue video和vue-video-player實現(xiàn)視頻鋪滿教程

    這篇文章主要介紹了vue video和vue-video-player實現(xiàn)視頻鋪滿教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評論