由于工作需要,我需要跨平台和离线缓存功能,因此深入研究了之前关注的 pwa 技术。恰逢微软、英特尔与谷歌共同举办的“第二届中国 pwa 开发者日”,我有幸参加了这次盛会,期间我们看到了许多新的工具和技术。
Progressive Web Application,即“渐进式网页应用”,理论上可以通过 Web 实现 APP 提供的所有服务。对于我来说,更直观的感受是,以前需要转换文件格式(如字体、图片、电子书等)时,必须下载各种转换软件,而现在只需打开一个转换网站即可。Web 确实非常方便,相信每个人的 Web 收藏夹里都有成百上千的书签,每个网站就是一个服务。然而,相较于桌面 APP,普通网站缺乏独立入口和离线使用能力,PWA 技术的出现恰好填补了这一差距,甚至在某些方面超过了 APP,因为 Web 可以非常方便地进行更新。
众所周知,Web 技术发展迅速,已能调用和控制多种硬件设备。记得以前某些操作不支持时,我们通过 CefSharp 或 Electron 来实现,而现在的 Web 已不再是 IE6 的时代。当前的 Web 不仅可以控制 USB、蓝牙,还可以调用显卡资源,实现 VR 和 XR。
我们首先使用
npm init vue@latest
我启用了 TypeScript、JSX、Vue Router、Pinna、ESLint、Prettier 等插件。
立即学习“前端免费学习笔记(深入)”;

接下来,进入目录并安装依赖:
cd pwaone npm i
安装 PWA 支持原本需要使用
vue add PWA
npm i vite-plugin-pwa -D
编辑
vite.config.js
vite-plugin-pwa
import { fileURLToPath, URL } from "node:url";
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import { VitePWA } from "vite-plugin-pwa";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
vueJsx(),
VitePWA({
manifest: {
name: "PWA 学习",
description: "我的第一个 PWA 项目",
theme_color: "#00bd7e",
icons: [
{
src: "/App_icon192.png",
sizes: "192x192",
type: "image/png",
},
{
src: "/App_icon512.png",
sizes: "512x512",
type: "image/png",
},
{
src: "/App_icon60.png",
sizes: "60x60",
type: "image/png",
},
],
},
shortcuts: [
{
name: "Open About",
short_name: "About",
description: "Open the about page",
url: "/about",
icons: [{ src: "/App_icon192.png", sizes: "192x192" }],
},
{
name: "Report issue",
short_name: "Report",
description: "Open the issue report page",
url: "/report",
icons: [{ src: "/App_icon192.png", sizes: "192x192" }],
},
],
registerType: "autoUpdate",
devOptions: {
enabled: true,
},
workbox: {
globPatterns: ["**/*.{js,css,html,ico,png,svg}"],
},
}),
],
resolve: {
alias: {
"@": fileURLToPath(new URL("./src", import.meta.url)),
},
},
});我们在这里添加了两个任务链接
shortcuts


更多
manifest
打包并测试:
npm run build npx http-server dist
通过打包和启动 http-server 服务器,我们可以在本地访问我们的 PWA 服务。
使用浏览器的开发者工具,我们可以发现,Service Workers 列表中已经成功注册了一个。首次访问后,再次访问的可离线资源也由 Service Worker 来响应。我们这里使用的是插件自动处理的方式,没有编写自定义的
sw.js

下图是缓存存储的情况:

在关闭 http-server 的情况下,我们依然可以访问这个站点,直到我们清除网站数据。

在电脑端的 Edge 和 Chrome 中,安装提示会在地址栏右侧显示一个小按钮,首次打开网站时会多显示几秒“安装”的提示文字。下图是在 Edge 中点击安装按钮后的效果:

安卓系统因使用浏览器的差异,表现各不相同。下图使用的是 MIUI 自带的系统浏览器(暗黑模式):

电脑安装后,可以在操作系统的软件管理列表中看到它,并查看详情如下:

通过注册表的搜索(大致在 HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\Repository\Packages\127.0.0.1-FB67779C_1.0.0.0_neutral__70zmge9146cb2),我们可以找到类似如下的软件注册信息:

根据注册表信息,打开软件安装目录,我们可以看到如下的目录结构:

也就是说,PWA 的 Windows 安装被打包为了 Windows Store App。除了可以通过浏览器来管理外,我们也可以将其作为普通软件在系统的应用管理中进行操作。
经过几番摸索和尝试,我还发现了一些实际使用中的情况,或许随着时间的推移或因个体差异会有些出入,这里分享出来供大家参考:
以上就是使用 vue 创建你的第一个 PWA 应用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号