update PWA
This commit is contained in:
parent
183ad70df9
commit
89f7ac8204
@ -1,3 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
const container = document.querySelector('.container');
|
||||
const coffees = [
|
||||
{ name: 'Tony Stark', image: 'images/Tony_Stark.jpg' },
|
||||
@ -12,8 +14,7 @@ const showCoffees = () => {
|
||||
(output += `
|
||||
<div class="card">
|
||||
<img class="card--avatar" src=${image} />
|
||||
<h1 class="card--title">${name}</h1>
|
||||
<a class="card--link" href="#">[CLICK]</a>
|
||||
<p class="card--title">${name}</p>
|
||||
</div>
|
||||
`),
|
||||
);
|
||||
@ -21,3 +22,12 @@ const showCoffees = () => {
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', showCoffees);
|
||||
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', function () {
|
||||
navigator.serviceWorker
|
||||
.register('/sw.js', { scope: '/' })
|
||||
.then((res) => console.log('Service worker registered'))
|
||||
.catch((err) => console.log('Service worker not registered', err));
|
||||
});
|
||||
}
|
||||
|
1
snipplets/projects/PWA/favicon.ico
Symbolic link
1
snipplets/projects/PWA/favicon.ico
Symbolic link
@ -0,0 +1 @@
|
||||
../../assets/favicon.ico
|
3621
snipplets/projects/PWA/fonts.css
Normal file
3621
snipplets/projects/PWA/fonts.css
Normal file
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Example PWD</title>
|
||||
<title>Example PWA</title>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<!-- PWA -->
|
||||
<link rel="manifest" href="manifest.json" />
|
||||
@ -24,8 +24,8 @@
|
||||
<nav>
|
||||
<h1>Example PWA</h1>
|
||||
<ul>
|
||||
<li>Home</li>
|
||||
<li>About</li>
|
||||
<li><a href="#">Home</a></li>
|
||||
<li><a href="#">About</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class="container"></div>
|
||||
|
@ -3,8 +3,8 @@
|
||||
"short_name": "Example PWA",
|
||||
"start_url": "index.html",
|
||||
"display": "standalone",
|
||||
"background_color": "#fdfdfd",
|
||||
"theme_color": "#db4938",
|
||||
"background_color": "#444444",
|
||||
"theme_color": "#d6585c",
|
||||
"orientation": "portrait-primary",
|
||||
"icons": [
|
||||
{
|
||||
|
@ -1,27 +0,0 @@
|
||||
const staticExamplePWA = 'example-pwa-site-v1';
|
||||
const assets = [
|
||||
'/',
|
||||
'/index.html',
|
||||
'/styles.css',
|
||||
'/app.js',
|
||||
'/images/Bear.png',
|
||||
'/images/DeusEx.png',
|
||||
'/images/Face.png',
|
||||
'/images/Tony_Stark.jpg',
|
||||
];
|
||||
|
||||
self.addEventListener('install', (installEvent) => {
|
||||
installEvent.waitUntil(
|
||||
caches.open(staticExamplePWA).then((cache) => {
|
||||
cache.addAll(assets);
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('fetch', (fetchEvent) => {
|
||||
fetchEvent.respondWith(
|
||||
caches.match(fetchEvent.request).then((res) => {
|
||||
return res || fetch(fetchEvent.request);
|
||||
}),
|
||||
);
|
||||
});
|
@ -1,12 +1,24 @@
|
||||
:root {
|
||||
--main-color: #b5b5b5;
|
||||
--second-color: #777777;
|
||||
--accent-color: #d6585c;
|
||||
--green-color: #6cd659;
|
||||
--bg-color: #222222;
|
||||
--item-color: #353035;
|
||||
--border-color: #444;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #fdfdfd;
|
||||
font-family: sans-serif;
|
||||
font-size: 1.2rem;
|
||||
background: var(--bg-color);
|
||||
color: var(--main-color);
|
||||
font-family: 'Samsung Sans', 'Droid Sans', 'Ubuntu', sans-serif;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
main {
|
||||
@ -20,6 +32,25 @@ nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
nav a {
|
||||
color: var(--main-color);
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
margin: 16px;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
nav a.active {
|
||||
color: #fff;
|
||||
background-color: rgba(214, 88, 92, 0.3);
|
||||
}
|
||||
|
||||
nav a:hover {
|
||||
color: #fff;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
ul {
|
||||
@ -27,11 +58,11 @@ ul {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-right: 1rem;
|
||||
h1,
|
||||
.card--title {
|
||||
color: var(--accent-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #e74c3c;
|
||||
margin-bottom: 0.5rem;
|
||||
.card {
|
||||
margin: 1rem;
|
||||
}
|
||||
|
60
snipplets/projects/PWA/sw.js
Normal file
60
snipplets/projects/PWA/sw.js
Normal file
@ -0,0 +1,60 @@
|
||||
'use strict';
|
||||
|
||||
const name = 'example-pwa-site-v1';
|
||||
const assets = [
|
||||
'/',
|
||||
'/index.html',
|
||||
'/styles.css',
|
||||
'/app.js',
|
||||
'/images/Bear.png',
|
||||
'/images/DeusEx.png',
|
||||
'/images/Face.png',
|
||||
'/images/Tony_Stark.jpg',
|
||||
];
|
||||
|
||||
// install - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/install_event
|
||||
// activate - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/activate_event
|
||||
// message - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/message_event
|
||||
// fetch - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/fetch_event
|
||||
// sync - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/sync_event
|
||||
// push - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/push_event
|
||||
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(
|
||||
caches.open(name).then((cache) => {
|
||||
cache.addAll(assets);
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('fetch', (event) => {
|
||||
event.respondWith(
|
||||
caches.match(event.request).then((res) => {
|
||||
return res || fetch(event.request);
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
const enableNavigationPreload = async () => {
|
||||
if (self.registration.navigationPreload) {
|
||||
await self.registration.navigationPreload.enable();
|
||||
}
|
||||
};
|
||||
|
||||
self.addEventListener('activate', (event) => {
|
||||
event.waitUntil(enableNavigationPreload());
|
||||
});
|
||||
|
||||
self.addEventListener('push', function (event) {
|
||||
console.log('[Service Worker] Push Received.');
|
||||
console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);
|
||||
|
||||
const title = 'Push Codelab';
|
||||
const options = {
|
||||
body: 'Yay it works.',
|
||||
icon: 'images/icon.png',
|
||||
badge: 'images/badge.png',
|
||||
};
|
||||
|
||||
event.waitUntil(self.registration.showNotification(title, options));
|
||||
});
|
Loading…
Reference in New Issue
Block a user