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

將項目配置為pwa模式,就可以在瀏覽器里面看到安裝應(yīng)用的選項,并且可以將web網(wǎng)頁像app一樣添加到手機(jī)桌面或者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應(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)還是開發(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: [
// 配置自定義運行時緩存
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'),
},
},
})測試上線
然后重新運行項目,就可以看到瀏覽器頁面上有標(biāo)識可以安裝了:

如果想判斷頁面是不是在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中打開"
}到此這篇關(guān)于3分鐘搞定vite項目(vue/react)使用vite-plugin-pwa配置為pwa應(yīng)用的文章就介紹到這了,更多相關(guān)vite項目使用vite-plugin-pwa配置為pwa內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue.js?Table?組件自定義列寬實現(xiàn)核心方法
這篇文章主要介紹了vue.js?Table?組件自定義列寬實現(xiàn)核心方法,文圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07
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)視頻鋪滿教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

