给网站添加PWA

什么是 PWA

渐进式 Web 应用程序 (PWA) 使用现代 API 进行构建和增强,提供增强的功能、可靠性和可安装性,同时只需一个代码库就可以借助任何设备触及任何人、任何地方。

渐进式网络应用程序(progressive web application – PWA),是一种可以提供类似于 native app(原生应用程序) 体验的 web app(网络应用程序)。PWA 可以用来做很多事。其中最重要的是,在离线(offline)时应用程序能够继续运行功能。这是通过使用名为 Service Workers 的 web 技术来实现的。

workbox-webpack-plugin

Workbox 是 Google Chrome 团队推出的一套 PWA 的解决方案,这套解决方案当中包含了核心库和构建工具,因此我们可以利用 Workbox 实现 Service Worker 的快速开发。

添加 Workbox

pnpm i -D workbox-webpack-plugin

webpack 配置

const {GenerateSW} = require('workbox-webpack-plugin');

new GenerateSW({
// importWorkboxFrom: 'local',
cacheId: 'huxy-pwa',
skipWaiting: true, // 跳过 waiting 状态
clientsClaim: true, // 通知让新的 sw 立即在页面上取得控制权
cleanupOutdatedCaches: true, // 删除过时、老版本的缓存
}),

注册 Service Worker

const initSW = () => {
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker
.register('./service-worker.js')
.then(registration => {
// console.log('SW registered: ',registration);
})
.catch(registrationError => {
// console.log('SW registration failed: ',registrationError);
});
});
}
};

manifest.json

引入 manifest.json

<link rel="manifest" href="/manifest.json">

manifest.json 配置

{
"name": "pwa_test",
"short_name": "test",
"description": "pwa test",
"lang": "cn",
"display": "standalone",
"orientation": "any",
"start_url": ".",
"theme_color": "#313131",
"background_color": "#313131",
"icons": [
{
"src": "./src/images/96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "./src/images/144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "./src/images/192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any maskable"
},
{
"src": "./src/images/512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}

升级 nodejs 服务为 https

const https = require('https');
const fs = require('fs');
const path = require('path');

const ssl = path.resolve(__dirname, './ssl');
const options = {
key: fs.readFileSync(`${ssl}/server.key`),
cert: fs.readFileSync(`${ssl}/server.pem`),
};
const httpsServer = https.createServer(options, app);

本地创建测试证书

openssl req -nodes -new -x509 -keyout server.key -out server.cert

如果浏览器提醒 “您的连接不是私密连接” ,并禁止你访问。你可以直接在当前页面输入 thisisunsafe,不是在地址栏输入,而是直接敲击键盘输入,页面会自动刷新进入网页。

测试

 huxy-admin 项目为例,测试一下效果。

可以通过 Chrome DevTools 里面的 Lighthouse 来检测,在 Categories 下勾选 Progressive Web App, 如果 PWA 选项没有点亮,则可根据提示进行修改。

也可以安装 lighthouse 包用命令行启动 Lighthouse :

lighthouse https://xxx.com --view

给网站添加PWA


原文始发于微信公众号(前端道萌):给网站添加PWA

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101890.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!