将vite项目(vue/react)使用vite-plugin-pwa配置为pwa应用,只需要3分钟即可

将项目配置为pwa模式,就可以在浏览器里面看到安装应用的选项,并且可以将web网页像app一样添加到手机桌面或者pad桌面上,或者是电脑桌面上,这样带来的体验就像真的在一个app上运行一样。为了实现这个目的,我们可以为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'// 生产还是开发
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}'], //缓存相关静态资源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中打开"}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu18搭建Kubernate集群

1.基本环境 版本介绍 ubuntu 18.04 docker 20.10 kube-apiserver 1.21.3 kube-controller-manage 1.21.3 kube-scheduler 1.21.3 kube-proxy 1.21.3 kubernetes 21.10 2.ubuntu环境必备 Docker环境 参考:Ubuntu18配置Docker 关闭防火墙 ufw disable关闭…

算法设计与分析实验:滑动窗口与二分查找

目录 一、寻找两个正序数组的中位数 1.1 具体思路 1.2 流程展示 1.3 代码实现 1.4 代码复杂度分析 1.5 运行结果 二、X的平方根 2.1 具体思路 2.2 流程展示 2.3 代码实现 2.4 代码复杂度分析 2.5 运行结果 三、两数之和 II-输入有序数组 3.1 采用二分查找的思想 …

【InternLM 大模型实战】作业与笔记汇总

笔记1:书生浦语大模型全链路开源体系 笔记2:轻松玩转书生浦语大模型趣味Demo 作业2:https://github.com/xiaomile/InternLM-homework/tree/main/%E4%BD%9C%E4%B8%9A1 笔记3:基于 InternLM 和 LangChain 搭建你的知识库 作业3&…

LeetCode —— 43. 字符串相乘

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

Bio-Rad(Abd serotec)独特性抗体

当一种抗体与另一种抗体的独特型结合时,它被称为抗独特型抗体。抗体的可变部分包括独特的抗原结合位点,称为独特型。独特型(即独特型)内表位的组合对于每种抗体都是独特的。 如今开发的大多数治疗性单克隆抗体是人的或人源化的,用于诱导抗药…

华为策略路由+NQA配置

---NQA--- [RouterA] nqa test-instance admin NQA [RouterA-nqa-admin-vlan10] test-type icmp [RouterA-nqa-admin-vlan10] destination-address ipv4 对方地址 [RouterA-nqa-admin-vlan10] frequency 10 [RouterA-nqa-admin-vlan10] probe-count 2 [RouterA-nqa-admin-vlan…

【国产MCU】-认识CH32V307及开发环境搭建

认识CH32V307及开发环境搭建 文章目录 认识CH32V307及开发环境搭建1、CH32V307介绍2、开发环境搭建3、程序固件下载1、CH32V307介绍 CH32V307是沁恒推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度…

【HTML 基础】标签的属性

文章目录 1. src - 图像和脚本的来源2. alt - 替代文本3. href - 超链接目标4. class - 类5. id - 标识符总结 在 HTML 中,标签不仅定义了文档的结构和内容,还可以通过属性为标签提供附加信息,以调整标签的行为或外观。以下是一些常见的 HTML…

java 社区资源管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web社区资源管系统是一套完善的java web信息管理系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.…

bxCAN-中断

bxCAN中断 bxCAN 共有四个专用的中断向量。每个中断源均可通过 CAN 中断使能寄存器 (CAN_IER) 来单独地使能或禁止。 发送中断可由以下事件产生: 发送邮箱 0 变为空,CAN_TSR 寄存器的 RQCP0 位置 1。 发送邮箱 1 变为空,CAN_TSR 寄存器…

SkyWalking+es部署与使用

第一步下载skywalking :http://skywalking.apache.org/downloads/ 第二步下载es:https://www.elastic.co/cn/downloads/elasticsearch 注:skywalking 和es要版本对应,可从下面连接查看版本对应关系,8.5.0为skywalking 版本号 Index of /di…

Apache Commons Collection3.2.1反序列化分析(CC1)

Commons Collections简介 Commons Collections是Apache软件基金会的一个开源项目,它提供了一组可复用的数据结构和算法的实现,旨在扩展和增强Java集合框架,以便更好地满足不同类型应用的需求。该项目包含了多种不同类型的集合类、迭代器、队…

大数据学习之Redis、从零基础到入门(三)

目录 三、redis10大数据类型 1.哪十个? 1.1 redis字符串(String) 1.2 redis列表(List) 1.3 redis哈希表(Hash) 1.4 redis集合(Set) 1.5 redis有序集合&#xff08…

Android SystemUI 介绍

目录 一、什么是SystemUI 二、SystemUI应用源码 三、学习 SystemUI 的核心组件 四、修改状态与导航栏测试 本篇文章,主要科普的是Android SystemUI , 下一篇文章我们将介绍如何把Android SystemUI 应用转成Android Studio 工程项目。 一、什么是Syst…

JAVA Web 学习(一)JDBC 和 Mybatis

一、Java连接数据库——JDBC & Mybatis JDBC 使用步骤 ① 创建工程,导入驱动jar包(mysql-connector-java-5.1.48.jar) ② 注册驱动。Class.forName(“com.mysql.jdbc.Driver”); ③ 获取连接。Connection conn DriverManager.getConn…

JS之放大镜案例

让我为大家带来一个关于放大镜的实现方法吧&#xff01; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><style>* {margin: 0;padding: 0;}.box {margin: 150px;overflow: hidden;}.big {display: …

华为配置小型网络WLAN 的基本业务示例

配置小型网络WLAN基本业务示例 组网图形 图1 配置小型网络WLAN基本业务组网图 小型WLAN网络简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 小型WLAN网络简介 本文介绍的WLAN网络是指利用频率为2.4GHz或5GHz的射频信号作为传输介质的无线局域网&#xff0c;相对于有…

图论第三天|127. 单词接龙 841.钥匙和房间 463. 岛屿的周长 1971. 寻找图中是否存在路径 684.冗余连接 685.冗余连接II

目录 Leetcode127. 单词接龙Leetcode841.钥匙和房间Leetcode463. 岛屿的周长Leetcode1971. 寻找图中是否存在路径Leetcode684.冗余连接Leetcode685.冗余连接II Leetcode127. 单词接龙 文章链接&#xff1a;代码随想录 题目链接&#xff1a;127. 单词接龙 思路&#xff1a;广搜搜…

Vue之初识Vue CLI 脚手架

Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处&#xff1f; 1.开箱即用&#xff0c;零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …

webassembly003 whisper.cpp的main项目-4 一些宏定义细节

标记函数为已弃用宏&#xff1a;WHISPER_DEPRECATED 对于 GNU 编译器&#xff08;__GNUC__&#xff09;&#xff0c;使用 __attribute__((deprecated(hint))) 属性将函数标记为已弃用&#xff0c;并附带指定的提示信息。对于微软 Visual C 编译器&#xff08;_MSC_VER&#xf…