Olá a todos.
Neste post do blog, aprenderemos os passos para armazenar em cache arquivos (resposta de URL) em um aplicativo SAPUI5 com a ajuda do Google Workbox e estaremos mais próximos de ser um Progressive Web App.
Mais informações sobre o Google Workbox podem ser encontradas aqui
https://developers.google.com/web/tools/workbox
.
As várias funcionalidades que podem ser adicionadas a um aplicativo web progressivo podem ser encontradas aqui
https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps
O escopo deste post será limitado ao uso da API de service worker no navegador. Os arquivos carregados pelo aplicativo são armazenados em cache no navegador durante o primeiro carregamento. As solicitações subsequentes são interceptadas e os arquivos são retornados do cache. Você pode aprender mais sobre Service Workers aqui
https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker
.
Vamos aprender
Estrutura do aplicativo SAPUI5
Você pode consultar
https://developers.sap.com/tutorials/sapui5-webide-create-project.html
para criar um aplicativo SAPUI5. Aqui, criei um aplicativo SAPUI5 com o nome 'sw-cache'. A estrutura de um aplicativo SAPUI5 se parece com a abaixo.
(Fig. 1 - Estrutura do projeto)
Os arquivos de nosso interesse são index.html e adicionaremos um novo arquivo sw.js no mesmo nível que index.html. O registro do Service Worker acontece em index.html e a inicialização e configurações são adicionadas em sw.js.
Registrando um Service Worker
Inicialize o Service Worker em index.html adicionando o script abaixo.
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js')
.then(function(registration) {
console.log('[sucesso] escopo: ', registration.scope);
}, function(err) {
console.log('[falha]: ', err);
});
}
</script>
No arquivo sw.js, definimos os padrões de rota a serem armazenados em cache, os detalhes estão comentados ao lado do código. Podemos usar vários caches com base em tipos de arquivos ou rotas, ou apenas um cache. O padrão de rota regex de entrada para mapear um cache pode ser adaptado com base no design.
importScripts