最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

vite-plugin-pwa倉(cāng)庫(kù)地址: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

配置插件

先有一個(gè)pwa應(yīng)用的圖標(biāo),最好是png格式的,尺寸最好大于192x192的:

在vite.config.js/ts中配置pwa應(yīng)用:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import { VitePWA } from 'vite-plugin-pwa'
// 生產(chǎn)還是開(kāi)發(fā)
const mode = 'production'
// https://vitejs.dev/config/
export default defineConfig({
    plugins: [
        vue(),
        VitePWA({
            mode: 'development',
            base: '/',
            manifest: {
                name: '應(yīng)用名稱',
                short_name: '應(yīng)用名稱',
                description: '應(yīng)用描述',
                icons: [
                    //添加圖標(biāo), 注意路徑和圖像像素正確
                    {
                        src: './public/app.png',
                        sizes: '1024x1024',
                        type: 'image/png',
                    },
                ],
            },
            registerType: 'autoUpdate',
            workbox: {
                globPatterns: ['**/*.{js,css,html,ico,png,jpg,svg}'], //緩存相關(guān)靜態(tài)資源
                runtimeCaching: [
                    // 配置自定義運(yùn)行時(shí)緩存
                    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個(gè)圖
                                maxEntries: 30,
                            },
                        },
                    },
                    {
                        urlPattern: /.*\.js.*/,
                        handler: 'StaleWhileRevalidate',
                        options: {
                            cacheName: 'wisbayar-js',
                            expiration: {
                                maxEntries: 30, // 最多緩存30個(gè),超過(guò)的按照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'),
        },
    },
})

測(cè)試上線

然后重新運(yùn)行項(xiàng)目,就可以看到瀏覽器頁(yè)面上有標(biāo)識(shí)可以安裝了:

如果想判斷頁(yè)面是不是在pwa中打開(kāi)的,可以嘗試使用:

    const isInStandaloneMode = () =>
        (window.matchMedia('(display-mode: standalone)').matches) || (window.navigator.standalone) || document.referrer.includes('android-app://');
    if (isInStandaloneMode()) {
        document.body.innerHTML = "是在pwa中打開(kāi)的"
    }else {
        document.body.innerHTML = "請(qǐng)?jiān)趐wa中打開(kāi)"
    }

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

相關(guān)文章

  • 解決vue項(xiàng)目報(bào)錯(cuò)webpackJsonp is not defined問(wèn)題

    解決vue項(xiàng)目報(bào)錯(cuò)webpackJsonp is not defined問(wèn)題

    下面小編就為大家分享一篇解決vue項(xiàng)目報(bào)錯(cuò)webpackJsonp is not defined問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 在Vant的基礎(chǔ)上實(shí)現(xiàn)添加表單驗(yàn)證框架的方法示例

    在Vant的基礎(chǔ)上實(shí)現(xiàn)添加表單驗(yàn)證框架的方法示例

    這篇文章主要介紹了在Vant的基礎(chǔ)上實(shí)現(xiàn)添加驗(yàn)證框架的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 淺談在Vue.js中如何實(shí)現(xiàn)時(shí)間轉(zhuǎn)換指令

    淺談在Vue.js中如何實(shí)現(xiàn)時(shí)間轉(zhuǎn)換指令

    這篇文章主要介紹了淺談在Vue.js中如何實(shí)現(xiàn)時(shí)間轉(zhuǎn)換指令,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • webstorm vue開(kāi)發(fā)配置方式

    webstorm vue開(kāi)發(fā)配置方式

    這篇文章主要介紹了webstorm vue開(kāi)發(fā)配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue?WebPack忽略指定文件或目錄方式

    Vue?WebPack忽略指定文件或目錄方式

    這篇文章主要介紹了Vue?WebPack忽略指定文件或目錄方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue如何使用async、await實(shí)現(xiàn)同步請(qǐng)求

    vue如何使用async、await實(shí)現(xiàn)同步請(qǐng)求

    這篇文章主要介紹了vue如何使用async、await實(shí)現(xiàn)同步請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Vue-cli中post請(qǐng)求發(fā)送Json格式數(shù)據(jù)方式

    Vue-cli中post請(qǐng)求發(fā)送Json格式數(shù)據(jù)方式

    這篇文章主要介紹了Vue-cli中post請(qǐng)求發(fā)送Json格式數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 深入淺析Vue 中 ref 的使用

    深入淺析Vue 中 ref 的使用

    在之前的前端開(kāi)發(fā)中,為了實(shí)現(xiàn)我們的需求,通常采用的方案是通過(guò) JS/Jquery 直接操縱頁(yè)面的 DOM 元素,得益于 Jquery 對(duì)于 DOM 元素優(yōu)異的操作能力,我們可以很輕易的對(duì)獲取到的 DOM 元素進(jìn)行操作。這篇文章主要介紹了Vue 中 ref 的使用 ,需要的朋友可以參考下
    2019-04-04
  • vue  elementUI 表單嵌套驗(yàn)證的實(shí)例代碼

    vue elementUI 表單嵌套驗(yàn)證的實(shí)例代碼

    這篇文章主要介紹了vue + elementUI 表單嵌套驗(yàn)證,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Vue3中導(dǎo)航守衛(wèi)的基本使用方法

    Vue3中導(dǎo)航守衛(wèi)的基本使用方法

    這篇文章主要給大家介紹了關(guān)于Vue3中導(dǎo)航守衛(wèi)的基本使用方法,正如其名vue-router?提供的導(dǎo)航守衛(wèi)主要用來(lái)通過(guò)跳轉(zhuǎn)或取消的方式守衛(wèi)導(dǎo)航,下面需要的朋友可以參考下
    2023-03-03

最新評(píng)論

新化县| 巴马| 壤塘县| 曲水县| 那坡县| 贵德县| 芒康县| 汾阳市| 余姚市| 曲水县| 竹山县| 乐昌市| 栾城县| 红河县| 土默特左旗| 颍上县| 玉树县| 宜兰县| 内黄县| 镇赉县| 浦东新区| 丰顺县| 嘉峪关市| 乐平市| 舞钢市| 当阳市| 长泰县| 安陆市| 繁昌县| 周宁县| 乌拉特前旗| 伊通| 孟村| 同德县| 嘉荫县| 香河县| 昌吉市| 辉县市| 富源县| 庐江县| 浦东新区|