Service worker side renderer
// sw.js
importScript('/.service-worker-renderer.js')
self.addEventListener('fetch', async function (event) {
event.respondWith(
const template = await parseTemplate('/article-template.html')
return new Response(renderTemplate(template, state), {
headers: {
'Content-Type': 'text/html'
}
})
)
}
// sw.js
importScript('/.service-worker-renderer.js')
// define router
self.addEventListener('install', function (event) {
// ...
var router = new Router()
router.route('/', '/main-template.html')
router.route('/article', '/article-template.html')
self.router = router
})
self.addEventListener('fetch', function (event) {
event.respondWith(
return router.match(event.request.url, state)
)
}