Aplicação web progressiva
Existem muitas tecnologias comummente utilizadas para criar aplicações web progressivas. Todos os PWAs requerem no mínimo um trabalhador de serviços e um manifesto.
ManifestEdit
O manifesto da aplicação web é uma especificação W3C que define um manifesto baseado em JSON (geralmente etiquetado manifesto.json) para fornecer aos programadores um lugar centralizado para colocar metadados associados a uma aplicação web incluindo:
- O nome da aplicação web
- Links para os ícones da aplicação web ou objectos de imagem
- A URL preferida para lançar ou abrir a aplicação web
- Os dados de configuração da aplicação web
- A orientação por defeito da aplicação web
- A opção de definir o modo de exibição, e.g. ecrã completo
Estes metadados são cruciais para que uma aplicação seja adicionada a um ecrã inicial ou listada ao lado de aplicações nativas.
iOS supportEdit
iOS Safari implementa parcialmente manifestos, enquanto a maioria dos metadados do PWA pode ser definida através de extensões específicas da Apple para as meta tags. Estas etiquetas permitem aos programadores activar a exibição em ecrã completo, definir ícones e ecrãs de splash, e especificar um nome para a aplicação.
WebAssemblyEdit
WebAssembly permite que o código pré-compilado seja executado num navegador web, a uma velocidade quase nativa. Assim, bibliotecas escritas em línguas tais como C podem ser adicionadas a aplicações web. Devido ao custo da passagem de dados de JavaScript para WebAssembly, os usos a curto prazo serão principalmente a compressão de números (tais como reconhecimento de voz e visão por computador), em vez de aplicações inteiras.
Armazenamento de dadosEditar
Contexto de execução de aplicações Web progressivas são descarregadas sempre que possível, pelo que as aplicações Web progressivas necessitam de armazenar a maioria do estado interno a longo prazo (dados do utilizador, recursos de aplicação carregados dinamicamente) de uma das seguintes maneiras
Armazenamento WebEditar
Armazenamento Web é uma API padrão W3C que permite o armazenamento de valores chave em navegadores modernos. A API consiste em dois objectos, sessionStorage (que permite o armazenamento apenas de sessão que é apagado no final da sessão do navegador) e localStorage (que permite o armazenamento que persiste durante as sessões).
Service workersEdit
Um service worker é um web worker que implementa um proxy de rede programável que pode responder aos pedidos web/HTTP do documento principal. É capaz de verificar a disponibilidade de um servidor remoto e de guardar o conteúdo quando esse servidor está disponível, e servir esse conteúdo mais tarde para o documento. Os trabalhadores dos serviços, como quaisquer outros trabalhadores da web, trabalham separadamente do contexto do documento principal. Os trabalhadores de serviço podem tratar de notificações push e sincronizar dados em segundo plano, fazer cache ou recuperar pedidos de recursos, interceptar pedidos de rede e receber actualizações centralizadas independentemente do documento que os registou, mesmo quando esse documento não é carregado.
Os trabalhadores de serviço passam por um ciclo de vida de registo, instalação e activação em três etapas. O registo envolve dizer ao navegador a localização do trabalhador de serviço em preparação para a instalação. A instalação ocorre quando não há nenhum trabalhador de serviço instalado no navegador para o webapp, ou se houver uma actualização do trabalhador de serviço. A activação ocorre quando todas as páginas PWAs são fechadas, de modo que não há conflito entre a versão anterior e a versão actualizada. O ciclo de vida também ajuda a manter a consistência quando se alterna entre versões de trabalhadores de serviços, uma vez que apenas um único trabalhador de serviços pode estar activo para um domínio.
Base de dados indexada APIEdit
Indexed Database API é uma API de base de dados padrão W3C disponível em todos os principais navegadores. A API é suportada por browsers modernos e permite o armazenamento de objectos JSON e quaisquer estruturas representáveis como uma string. A API de base de dados indexada pode ser utilizada com uma biblioteca de invólucros fornecendo construções adicionais à sua volta.
AppCache (obsoleto)Editar
Aplicação Cache (ou manifesto de cache AppCache ou HTML5) é uma tecnologia anterior que permitia à aplicação armazenar previamente o conteúdo em cache para utilização posterior quando o dispositivo está offline. Funciona adequadamente para aplicações de página única para as quais foi concebido, mas falha de forma problemática para aplicações de várias páginas como wikis. A partir de Maio de 2019, a tecnologia é suportada pelos principais navegadores e está em uso há anos por alguns sítios, mas já está obsoleta a favor dos trabalhadores dos serviços e acabará por ser removida.