PWA : Workbox Routing 일본어 번역 (그 2)
4409 단어 PWAWorkboxservice-worker
Workbox Routing
참조 페이지 : htps : //에서 ゔぇぺぺrs. 오, ぇ. m / u b / 및 ls / rk box / mozue s / rk bo x-rochun g
Navigation Route 작성 방법
사이트가 SPA(단일 페이지 애플리케이션)인 경우 navigation requests
에 대한 모든 응답에 NavigationRoute
를 사용할 수 있습니다.
보충: navigation requests
에 대한 자세한 설명은 여기 . 어쩌면 "네비게이션 요청은 'document'를 목적지로하는 요청이다"라는 것입니다.
workbox.routing.registerNavigationRoute(
// 事前に'/single-page-app.html'がプリキャッシュされているとします
// 一致するキャッシューキーを取得します
workbox.precaching.getCacheKeyForURL('single-page-app.html')
)
* 참고 : getCacheKeyForURL
는 url을 인수로 취하여 캐시 키( string
형식)를 반환합니다. url이 /index.html
와 같이 버전 관리되지 않으면 캐시 키는 (search 매개 변수가있는) url 자체가됩니다.
사용자가 브라우저에서 사이트에 액세스할 때마다 페이지에 대한 요청은 navigation request
처리되고 캐시된 /single-page-app.html
가 응답으로 서브됩니다. (주 : workbox-caching
또는 자신의 설치 단계를 통해 페이지를 미리 캐시하는 경우)
기본적으로 모든 navigation requests
에 적용됩니다. 만약 URL의 서브 세트에만 적용을 제한 아는 경우는 whitelist
와 blacklist
로 라우팅과 매치한 페이지를 타겟으로 하는 것이 가능합니다.
workbox.routing.registerNavigationRoute(
// 事前に'/single-pafe-app.html'がプリキャッシュされているとします
// 一致するキャッシューキーを取得します
workbox.precaching.getCacheKeyForURL('single-page-app.html', {
whitelist: [
new RegExp('/blog/')
],
blacklist: [
new RegExp('/blog/restricted/'),
]
})
)
whitelist
와 blacklist
에 같은 URL 가 지정되고 있는 경우는 blacklist
의 지정이 생깁니다.
Default Handler 설정
루트와 일치하지 않는 요청에 대해 "핸들러"를 설정하려면 default handler
를 사용할 수 있습니다.
workbox.routing.setDefaultHandler(({url, event, params}) => {
...
});
Catch Handler 설정
요청이 발생했을 때 경로 설정이 오류가 발생하면 catch handler
에서 응답 설정
수 있습니다.
workbox.routing.setCatchHandler(({event}) => {
if (event.request.mode === 'navigate') {
return caches.match('/error-page.html');
}
return Response.error();
})
GET 이외의 요청에 대한 경로 설정
기본적으로 모든 경로는 GET
요청을 가정합니다.
POST
와 같은 다른 요청의 경로를 설정하려면 요청을 등록할 때 메서드를 정의해야 합니다.
workbox.routing.registerRoute(
matchCb,
handlerCb,
'POST'
)
workbox.routing.regiterRoute(
new RegExp('/api/.*\.json'),
handlerCb,
'POST'
)
라우터 로그
workbox-routing
는 Workbox에서 처리되는 URL을 강조 표시하고 로그를 반환합니다.
로그를 자세히 보려면 로그 수준을 debug
로 설정합니다. 자세한 내용은 여기
보충:
workbox.core.setLogLevel(workbox.core.LOG_LEVELS.debug);
응용편
handleRequest()
메소드를 사용하면 라우팅의 세밀한 설정이 가능합니다.
const router = new DefaultRouter();
self.addEventListener('fetch', (evebt => {}
const responsePromise = router.handleRequest(event);
if (responsePromise) {
// 指定したリクエストを捌くルートが見つかったとき
event.respondWith(responsePromise)
} else {
リクエストを捌くルートが見つからないとき
}
))
Router
const router = new DefaultRouter();
router.registerRoute(new Route(matchCb, handlerCb));
router.registerRoute(new RegExpRoute(new RegExp(...), handlerCb));
router.registerRoute(new NavigationRoute(handlerCb));
Reference
이 문제에 관하여(PWA : Workbox Routing 일본어 번역 (그 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/stoneshower/items/29b27948412db7cde252
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
workbox.routing.registerNavigationRoute(
// 事前に'/single-page-app.html'がプリキャッシュされているとします
// 一致するキャッシューキーを取得します
workbox.precaching.getCacheKeyForURL('single-page-app.html')
)
workbox.routing.registerNavigationRoute(
// 事前に'/single-pafe-app.html'がプリキャッシュされているとします
// 一致するキャッシューキーを取得します
workbox.precaching.getCacheKeyForURL('single-page-app.html', {
whitelist: [
new RegExp('/blog/')
],
blacklist: [
new RegExp('/blog/restricted/'),
]
})
)
workbox.routing.setDefaultHandler(({url, event, params}) => {
...
});
workbox.routing.setCatchHandler(({event}) => {
if (event.request.mode === 'navigate') {
return caches.match('/error-page.html');
}
return Response.error();
})
workbox.routing.registerRoute(
matchCb,
handlerCb,
'POST'
)
workbox.routing.regiterRoute(
new RegExp('/api/.*\.json'),
handlerCb,
'POST'
)
workbox.core.setLogLevel(workbox.core.LOG_LEVELS.debug);
const router = new DefaultRouter();
self.addEventListener('fetch', (evebt => {}
const responsePromise = router.handleRequest(event);
if (responsePromise) {
// 指定したリクエストを捌くルートが見つかったとき
event.respondWith(responsePromise)
} else {
リクエストを捌くルートが見つからないとき
}
))
const router = new DefaultRouter();
router.registerRoute(new Route(matchCb, handlerCb));
router.registerRoute(new RegExpRoute(new RegExp(...), handlerCb));
router.registerRoute(new NavigationRoute(handlerCb));
Reference
이 문제에 관하여(PWA : Workbox Routing 일본어 번역 (그 2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/stoneshower/items/29b27948412db7cde252텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)