在这篇文章中,我们将探索渐进式 Web 应用程序 (PWA),这是一种构建 Web 应用程序的现代方法,可提供类似本机应用程序的体验。我将介绍 PWA 的基础知识、它们的优点以及从头开始创建 PWA 的步骤。
什么是渐进式 Web 应用程序 (PWA)?
渐进式 Web 应用程序是一种通过 Web 交付的应用程序软件,使用常见的 Web 技术(包括 HTML、CSS 和 JavaScript)构建。 PWA 旨在在任何使用符合标准的浏览器的平台上工作。
PWA 的主要特点:
为什么要构建 PWA?
先决条件:
创建一个简单的 PWA:
项目设置:
mkdir my-pwa cd my-pwa npm init -y npm install express
项目结构:
my-pwa/ ├── public/ │ ├── index.html │ ├── styles.css │ └── app.js ├── server.js ├── package.json └── manifest.json
manifest.json:
清单文件提供有关 PWA 的元数据,并且是在主屏幕上安装应用程序所必需的。
// manifest.json { "name": "My PWA", "short_name": "PWA", "start_url": "/", "display": "standalone", "background_color": "#ffffff", "theme_color": "#007bff", "icons": [ { "src": "icon-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "icon-512x512.png", "sizes": "512x512", "type": "image/png" } ] }
index.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>My PWA</title> <link rel="stylesheet" href="/styles.css"> <link rel="manifest" href="/manifest.json"> </head> <body> <h1>Welcome to My Progressive Web App!</h1> <script src="/app.js"></script> </body> </html>
styles.css:
/* styles.css */ body { font-family: Arial, sans-serif; text-align: center; background-color: #f0f0f0; color: #333; }
app.js:
// app.js if ('serviceWorker' in navigator) { window.addEventListener('load', () => { navigator.serviceWorker.register('/service-worker.js') .then(registration => { console.log('ServiceWorker registered: ', registration); }) .catch(error => { console.log('ServiceWorker registration failed: ', error); }); }); }
Service Worker 是浏览器在后台运行的脚本,与网页分开。它拦截网络请求并可以缓存资源以提高性能和离线能力。
service-worker.js:
// service-worker.js const CACHE_NAME = 'my-pwa-cache-v1'; const urlsToCache = [ '/', '/styles.css', '/app.js', '/manifest.json', '/icon-192x192.png', '/icon-512x512.png' ]; self.addEventListener('install', event => { event.waitUntil( caches.open(CACHE_NAME) .then(cache => { return cache.addAll(urlsToCache); }) ); }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request) .then(response => { return response || fetch(event.request); }) ); });
server.js:
const express = require('express'); const path = require('path'); const app = express(); const PORT = process.env.PORT || 3000; app.use(express.static(path.join(__dirname, 'public'))); app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`); });
运行服务器:
node server.js
打开应用程序:
服务人员注册:
添加到主屏幕:
最佳实践:
总结所涵盖的要点:
以上是渐进式 Web 应用程序 (PWA)的详细内容。更多信息请关注PHP中文网其他相关文章!