vue3+vite-plugin-pwa实现PWA demo

Vue 3 30天精进之旅:Day 25 - PWA支持 PWA(Progressive Web App,渐进式Web应用)是一种通过现代Web技术构建的应用程序,它结合了Web和原生应用的优点,能够提供更流畅、更接近原生应用的用户体验。通过今天的学习,我们成功地为Vue 3应用添加了PWA支持。PWA不仅能够提升用户体验,还能够让我们的应用更具竞争力。在未来的开发中,PWA将成为Web应用开发的重要趋势之一。希望本文能够帮助你在Vue 3中轻松实现PWA功能。在接下来的几天中,我们将继续探索Vue 3的其他高级特性和最佳实践。敬请期待!相关资源。 阅读详情
AI摘要

本文介绍了使用vue3和vite-plugin-pwa实现PWA demo的方法。首先阐述了PWA概念,它能提供类原生应用体验,有离线访问等特性。接着说明了实现步骤,包括创建vue项目、安装依赖、配置等。还提及网络断开时,PWA用缓存响应请求,网络恢复会更新缓存。

一、概念

  1. 什么是PWA (官网链接)

PWA(Progressive Web App)是一种能够提供类似于原生应用体验的网页应用。它结合了网页和移动应用的优点,具有离线访问、推送通知、快速加载等特性。

  1. 有什么用

PWA 可以提升用户体验,增加用户留存率。它们可以在没有网络连接的情况下工作,并且可以像原生应用一样被添加到主屏幕。

二、实现步骤

  1. 先创建一个默认的vue项目
npm create vue@latest
  1. 安装 vite-plugin-pwa 依赖
npm install vite-plugin-pwa --save-dev
  1. vite.config.ts里配置
import { fileURLToPath, URL } from 'node:url'
import {VitePWA} from 'vite-plugin-pwa';
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'

// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    vueDevTools(),
    VitePWA({
      registerType: 'autoUpdate',  // 配置 service worker 的注册方式
      includeAssets: ['favicon.svg', 'robots.txt'],  // 指定需要包含的静态资源
      manifest: {
        name: 'My PWA App',
        short_name: 'My App',
        description: 'A progressive web app built with Vite',
        theme_color: '#ffffff',
        icons: [
          {
            src: 'ball192.png',//像素尺寸一定要对应
            sizes: '192x192',
            type: 'image/png',
          },
          {
            src: 'ball512.png',
            sizes: '512x512',
            type: 'image/png',
          },
        ],
      },
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
})

注意配置的manifest的icons图片像素尺寸一定要对应

在这里插入图片描述

  1. 打包
npm run build
  1. 启动静态资源dist

创建server.js

npm install express -D
node server.js

请添加图片描述

  1. 浏览器安装应用
    在这里插入图片描述

安装后,桌面会多一个应用My PWA App,打开效果如下图

在这里插入图片描述

打开f12可以看到资源缓存情况 ServiceWorder
在这里插入图片描述

控制台Applycation里可以看到具体信息

在这里插入图片描述

Storage Cache Storage里可以看到缓存的数据

在这里插入图片描述

Application Storage 里可以清除缓存数据,清楚后再次刷新请求就不是从缓存里取了,而是会重新请求
在这里插入图片描述

在这里插入图片描述

三、 网络断开时的接口请求情况

当网络断开时,PWA 会使用缓存的数据来响应接口请求。具体流程如下:

  1. 首次请求: 当用户首次访问应用时,Service Worker 会缓存接口的响应数据。
  2. 离线访问: 当用户在离线状态下访问应用时,Service Worker 会从缓存中读取数据并返回,确保应用能够正常运行。
  3. 缓存更新: 当网络恢复时,Service Worker 会自动更新缓存的数据,确保用户始终获得最新的数据。
import { defineConfig } from 'vite';
import VitePWA from 'vite-plugin-pwa';

export default defineConfig({
  plugins: [
    VitePWA({
      registerType: 'autoUpdate',
      includeAssets: ['favicon.svg', 'robots.txt'],
      manifest: {
        name: 'My PWA App',
        short_name: 'My App',
        description: 'A progressive web app built with Vite',
        theme_color: '#ffffff',
        icons: [
          {
            src: 'icons/icon-192x192.png',
            sizes: '192x192',
            type: 'image/png',
          },
          {
            src: 'icons/icon-512x512.png',
            sizes: '512x512',
            type: 'image/png',
          },
        ],
      },
      workbox: {
        runtimeCaching: [
          {
            urlPattern: /^https:\/\/api\.example\.com\/.*$/,
            handler: 'CacheFirst',
            options: {
              cacheName: 'api-cache',
              expiration: {
                maxEntries: 50,
                maxAgeSeconds: 300,
              },
              cacheableResponse: {
                statuses: [0, 200],
              },
            },
          },
        ],
      },
    }),
  ],
});

在这个示例中,我们使用 vite-plugin-pwa 插件来配置 PWA,并添加了对接口请求的缓存策略。具体来说,我们对匹配 https://api.example.com/ 的请求使用 CacheFirst 策略,并设置了缓存的最大条目数和最大缓存时间。

这里就不测试了,感兴趣可以配置个接口,请求一下测试

卸载结束😎

在这里插入图片描述

附 github demo 代码 🐒

VitePress 如何开启 PWA 功能 VitePress 是一个由 Vue 和 Vite 驱动的静态网站生成器。它是为了创建文档网站而设计的,但也可以用于构建博客和其他静态网站 阅读详情

相关推荐

谷歌浏览器Lighthouse审计Vue项目性能优化实战

现代Web页面性能直接影响用户体验与业务转化率,对单页应用(SPA)的优化更需量化依据。Lighthouse作为Google开源的自动化审计工具,通过模拟真实环境采集性能、可访问性、SEO等多维度指标,生成可复现的量化报告,帮助开发者定位瓶颈。其核心指标如FCP、LCP、TBT等,能精准反映页面加载与交互体验。在实际工程中,Lighthouse支持DevTools、CLI和Node API三种使用方式,可灵活嵌入开发流程。对于Vue项目,通过审计报告指导路由懒加载、组件按需引入、图片压缩等优化动作,可显著改

weixin_34216196的博客 448

vite-plugin-pwa配置详解

随着项目越来越庞大或者需求越来越复杂,有时候我们需要,缓存某些特定的路径文件,或者请求类型,以及单独设置js或者html的缓存时间和个数,这个时候我们就需要用到配置/**/***/ method?/**options?: {/**/**/**handler: 取缓存的策略,有五种CacheFirst:缓存优先CacheOnly:仅使用缓存中的资源:网络优先:仅使用正常的网络请求:从缓存中读取资源的同时发送网络请求更新本地缓存method。

YMX2020的博客 5794

vite-plugin-pwa:Vite的零配置PWA

产品特点 产生具有离线支持的Service Worker(通过 ) 自动注入Web App WIP :策略选项 WIP :元注入 WIP :不同尺寸的图标生成 用法 :information_selector: v0.3.x支持Vite 2, v0.3.x支持Vite 1。 npm i vite-plugin-pwa -D # yarn add vite-plugin-pwa -D 将其添加到vite.config.js // vite.config.js import { VitePWA } from 'vite-plugin-pwa' export default { plugins : [ VitePWA

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

将项目配置为pwa模式,就可以在浏览器里面看到安装应用的选项,并且可以将web网页像app一样添加到手机桌面或者pad桌面上,或者是电脑桌面上,这样带来的体验就像真的在一个app上运行一样。

3103

ptrade从零开始学量化第1期【ptrade如何新建策略、新建回测、新建交易】什么是ptrade量化交易?

回测之前需要对开始时间、结束时间、回测资金、回测基准、回测频率几个要素进行设定,设定完毕后点击保存。然后再点击回测按键,系统就会开始运行回测,回测的评价指标、收益曲线、日志都会在界面中展现。可以选择不同的业务类型(比如股票),然后给策略设定一个名称,添加成功后可以在默认策略模板基础上进行策略编写。交易界面点击新增按键进行新增交易操作,策略方案中的对象为所有策略列表中的策略,给本次交易设定名称并点击确定后系统就开始运行交易了。交易开始运行后,可以点击交易详情,查看策略评价指标、交易明细、持仓明细、交易日志。

GJ57017_wx的博客 2483

pycharm添加Anaconda解释器显示不出来

因为我之前下载的是pycharm最新版本2024.1的,所以我抱着试一试的心态卸载重装了2021.3.3的,创建新文件的时候立刻就自己识别好了conda环境。就是图中画圈的地方,之前一直显示为python的图标,但是再Python Interpreter后面跟的路径确实是我下载anaconda的地方。另外一种方法就是使用Virtualenv Environment方式配置,但是我的pycharm还是没有识别出conda的图标。首先是这位的方法,先添加系统解释器,再重启,但是我的图标还是python。

2202_75803271的博客 4006

vite-plugin-pwa报错:Configure “workbox.maximumFileSizeToCacheInBytes“ to change the limit

vite-plugin-pwa报错:Configure "workbox.maximumFileSizeToCacheInBytes" to change the limit

徐同保的专栏 1404

VECTOR硬件VN1600系列对比:VN1610、VN1611、VN1630A、VN1640A、VN1630log、VN1670

VN16系列说不清道不明的区别和关系

AmorRun的博客 2万+

Vue-CRM技术栈清单:Vue 3.5、Vuetify 4、Pinia 3与Vite 8的黄金组合全解读

**Vue-CRM 技术栈**是构建现代 CRM 客户关系管理系统的一套黄金组合:Vue 3.5 提供响应式核心,Vuetify 4 负责企业级 UI 组件,Pinia 3 管理全局状态,Vite 8 驱动极速构建。这个基于 Vue PWA 模板打造的简单可复用 CRM 项目(v3.5.0),以电商管理场景为载体,完整演示了这套技术栈如何零后端、开箱即用地跑起来 🚀 ## 为什么这套 Vue-

gitblog_00066的博客 419

STM32接入CH340芯片的升级电路及初始化进入升级模式(死机)问题处理

MCU-REST 在 MCU-BOOT0 处于低电平状态下,进行下拉操作,在MCU-REST 与 MCU-BOOT0 恢复正常电平时,将导致MCU死机,MCU-REST 先于 MCU-BOOT0 下拉可解决该问题;MCU-REST 在 上升沿结束时将判断 MCU-BOOT0 的状态,MCU-BOOT0 处于高电平,MCU死机,MCU-BOOT0 处于低电平 MCU 正常;

LuDvei的博客 2491

PX4实战(十):PX4导航模块(Navigator)详解

本文将对 PX4 固件 v1.14.3 版本中的 Navigator(导航)模块进行详尽的技术剖析。作为飞行控制栈中的高层决策核心,Navigator 模块承担着将抽象的任务指令转化为具象的底层控制设定点的关键职责。本文基于对 src/modules/navigator 目录下源代码的深究研究与架构反推,详细阐述了该模块的文件组织结构、基于状态机的控制逻辑、uORB 异步通讯机制、核心任务模式(Mission)与返航模式(RTL)的实现细节,以及地理围栏(Geofence)与任务可行性检查(Feasibil

PX4-SLAM-PNC 669

告别图标焦虑!Vue3项目里Element Plus、Iconify和本地图标混搭的保姆级配置

本文详细介绍了在Vue3项目中如何高效整合Element Plus、Iconify和本地SVG/PNG图标,提供了一套完整的配置方案。通过Vite插件优化、自动化导入和性能调优技巧,帮助开发者解决图标管理混乱问题,提升开发效率和项目可维护性。特别适合中后台项目应对复杂的图标需求场景。

ateu52935的博客 344

2024年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++小学组:带解析)

2024全国青少年信息素养大赛C++算法创意实践挑战赛初赛真题及解析

王老师青少年编程 2809

Vue 3进阶:通过7类开源项目掌握工程化与实战技能

在Vue 3开发中,掌握组合式API和响应式系统等核心概念是基础。理解其原理有助于构建可维护的应用架构。这些技术的价值在于提升开发效率和代码质量,广泛应用于企业后台、全栈应用和可视化项目等场景。本文聚焦Vue 3.4+生态,通过分析vue-vben-admin、Vitesse等代表性项目,深入探讨工程化思维和最佳实践,帮助开发者跨越从“学语法”到“做项目”的鸿沟,系统提升实战能力。

weixin_33857230的博客 441

学Simulink--人形机器人控制场景实例:基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真

matlab编辑% 连杆长度 (m)% 躯干(髋到CoM)% 大腿% 小腿% 质量 (kg)% 转动惯量(绕质心,简化为杆)matlab编辑% 躯干CoM(假设在髋上方L_body/2处)% 左大腿CoM% 左小腿CoM% (右腿类似,略)本文完成了基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真,实现了:✅ 定义7-DOF平面人形结构✅ 使用Symbolic Math Toolbox自动推导动力学方程✅ 生成。

amy_mhd的博客 397

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1066

不装 Android Studio,也能把 Vue / React 一键打成 APK:开源工具 lw.Web2Android

lw.Web2Android是一款轻量级开源工具,专注于将Web项目快速打包为Android APK,无需配置复杂的Android开发环境。它支持HTML、Vue、React等静态项目,采用预编译Runtime技术简化构建流程,自动管理APK签名,适合企业内部系统、展示类App等场景。与Capacitor等混合开发框架不同,它保持功能精简,专注于解决"已有Web项目转APK"的核心需求。项目目前处于早期阶段,强调稳定性和可靠性而非功能堆砌。

.NET 人工智能实践 604

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Vue模板语法实战:构建高性能照片画廊

Vue模板语法是声明式渲染的核心机制,其本质是通过v-for、@click、v-bind等指令将响应式数据映射为动态DOM。理解v-for的key原理、@click的事件修饰符与防抖策略、v-if与v-show的性能差异,是实现高效图片画廊的基础。该技术方案不依赖UI框架或状态管理库,仅用原生模板能力即可支撑电商图集、作品展示、旅游相册等真实场景,兼顾可访问性、SEO友好性与移动端手势交互。本文聚焦Vue 3.4模板语法在照片画廊中的工程化落地,覆盖懒加载、错误兜底、键盘导航与Service Worker缓

dengwan3818的博客 421

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

nvsim Dashboard 架构落地指南:Vite + 双通道(WASM + REST/WebSocket)如何把确定性 NV 金刚石磁力计仿真器搬进浏览器

> 本文依据 [docs/adr/ADR-092-nvsim-dashboard-implementation.md](https://link.gitcode.com/i/41d94bcc1a469a91467af01514acac69) 整理编写。RuView 仓库中的 nvsim 是一个用 Rust 编写的、完全确定性的 NV-diamond 系综磁力计正向仿真器(约 4.5M sample

gitblog_00508的博客 500

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Vue CLI脚手架深度解析与实战指南

前端工程化是现代Web开发的核心环节,其中脚手架工具作为项目初始化的关键基础设施,通过自动化配置显著提升开发效率。Vue CLI作为Vue.js官方推荐的标准化工具链,基于Webpack构建系统,集成了Babel转译、ESLint校验、CSS预处理等前端工程化最佳实践。其插件机制支持TypeScript、PWA等特性扩展,配合环境变量管理和性能优化策略,能够快速构建企业级应用。在微前端架构和CI/CD持续集成场景下,Vue CLI通过vue.config.js的深度配置能力,为复杂项目提供稳定支持。本文以V

weixin_33951761的博客 389

Vite 8 Rolldown 构建引擎深度实践:单AST双模式提速3倍

现代前端构建系统正从多工具协同走向统一引擎架构。Rolldown作为Vite 8自研Rust构建器,基于单AST树实现开发与生产双模式统一处理,突破esbuild与Rollup语义割裂瓶颈。其核心价值在于通过AST层常量折叠、模块图预计算和原生CSS/TypeScript解析,显著提升tree-shaking精度与HMR响应速度。在中后台、数据看板及TS工具库等真实工程中,构建耗时平均降低70%以上,同时保持零业务代码修改与完整功能兼容。本文聚焦Rolldown落地中的配置要点、插件迁移、CSS处理与环境变

weixin_34226182的博客 269

用Lighthouse量化审计Vue项目性能并精准优化

前端性能优化是工程实践中永恒的焦点,页面加载速度与交互流畅度直接影响用户体验与业务转化。如何客观度量性能瓶颈,是许多开发者面临的首要难题。Lighthouse是一款由谷歌浏览器内置的自动化审计工具,能够从性能、无障碍、最佳实践等多个维度对网页进行全面评分,并生成可执行的优化建议。它以核心指标如FCP、LCP、TBT、CLS为量化依据,帮助开发者将“感觉慢”转化为具体数值。在Vue项目开发中,借助Lighthouse可以精准定位资源体积过大、主线程阻塞、布局抖动等常见问题,通过路由懒加载、代码分割、图片优化及

weixin_33788244的博客 366

Slidev:开发者导向的 Markdown 幻灯片方案——从 npm init slidev 到导出、主题与远程控制的完整实践

Slidev 是一个面向开发者的幻灯片制作与演示工具,以 Markdown 为内容载体,由 Vite 驱动开发服务,支持主题化、代码高亮、LaTeX、图表、绘图、录制与多格式导出。读完本文,你将掌握 Slidev 的初始化流程、常用 CLI 命令与参数、默认模板结构,以及仓库中对应的源码实现位置,从而能独立搭建、定制和发布一套幻灯片。 [![Slidev 演讲者模式界面截图](https://r

gitblog_01049的博客 504

VTJ.PRO项目模板:一体化架构解析与UniApp多端开发实战

在现代前端工程化实践中,项目脚手架与统一模板是提升团队协作效率和代码质量的核心基础设施。其原理在于通过预置最佳实践的配置与架构,将构建工具、代码规范、状态管理等通用能力标准化,从而降低项目初始化成本,保障技术栈一致性。这一技术方案的核心价值在于解决了开发者在配置环境、集成工具链时面临的重复劳动与兼容性问题,显著提升了项目的可维护性和团队协作效率。在实际应用场景中,尤其适用于需要快速启动的Web应用、H5页面以及追求“一套代码多端发布”的跨平台应用开发。本文以VTJ.PRO平台提供的项目模板为例,深入剖析其涵

weixin_34221332的博客 446

Electron+Vue3桌面应用架构改造实战:从VSCode插件到跨平台打字游戏

Electron 是构建跨平台桌面应用的主流框架,其核心价值在于复用 Web 技术栈并接入原生能力;Vue 3 凭借 Composition API 和响应式系统,显著提升复杂交互场景下的状态管理可维护性。本文围绕一个真实落地的打字游戏项目,深入解析如何在保持业务逻辑高复用(95%+)前提下,完成从 VSCode 插件到独立 Electron 应用的架构改造——涵盖运行模型差异、平台抽象层设计、IPC 安全通信、预加载脚本加固等关键工程实践,适用于需要兼顾开发效率与桌面体验的中大型 Electron 项目。

weixin_33770878的博客 308

Project AIRI 全面指南:开源 AI VTuber 数字生命容器的定位、能力与上手路径

本指南以 Project AIRI 官方文档站「소개(介绍)」页为核心,系统梳理这个开源 AI VTuber / 数字伙伴项目的定位、能力边界与上手方式。你将理解 AIRI 与 Neuro-sama、Grok Companion、SillyTavern 之间的差异与继承关系,掌握网页端与桌面端的完整配置流程,并了解仓库的 monorepo 结构与贡献入口。 ## 一句话理解 AIRI 官方文档

gitblog_00581的博客 705
上一篇: vue项目中使用@microsoft/fetch-event-source库实现流式接口对接
下一篇: vue使用slot时子组件的onUpdated执行问题
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值