企画主旨
Frontend Developer Roadmapをひたすら巡回する企画
詳しくはこちら
今回の実施内容
ぷろぐれっしぶうぇぶあぷり
PWAの対応。任意のスタンプだが、個人的に興味があったものを抜粋で実施。
Progressive Web Apps
Service Worker
Googleが紹介するはじめてのプログレッシブウェブアプリを参考にして、今までのサイトをPWAに対応させる。
Service Workerを追加することで、オフライン対応・インストール可能にする。
sw.js
const CACHE_NAME = 'my-site-cache-v1';
const urlsToCache = ['/', '/main.js', '/assets/tenki.json'];
self.addEventListener('install', event => {
// Perform install steps
event.waitUntil(
caches.open(CACHE_NAME).then(cache => {
console.log('Opened cache');
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
// Cache hit - return response
if (response) {
return response;
}
const fetchRequest = event.request.clone();
return fetch(fetchRequest).then(response => {
// Check if we received a valid response
if (!response || response.status !== 200 || response.type !== 'basic') {
return response;
}
const responseToCache = response.clone();
caches.open(CACHE_NAME).then(cache => {
cache.put(event.request, responseToCache);
});
return response;
});
})
);
});
self.addEventListener('activate', event => {
const cacheWhitelist = ['pages-cache-v1', 'blog-posts-cache-v1'];
event.waitUntil(
caches.keys().then(cacheNames => Promise.all(
cacheNames.map(cacheName => {
if (cacheWhitelist.indexOf(cacheName) === -1) {
return caches.delete(cacheName);
}
})
))
);
});
Using Light House
Chromeの拡張機能からLigh Houseを起動して、パフォーマンス計測を実施。
提案された項目の中から、修正可能なものをピックアップ。
主に、
- JS/CSSの分割と圧縮
- BootstrapをCDNから読み込み
- 背景とのコントラスト
成果物
デザインが変わっていないのに、裏側だけがモダンになっていく。
Nginx等でキャッシュやgzip圧縮ができれば、もっと高みを目指せたかも。
https://github.com/tonchan1216/WDR-frontend/tree/v11
https://tonchan1216.github.io/WDR-frontend/v11/