Voltar ao blogue

Ler um site local sem montar um servidor web

Quer ver um site estático que tem à mão. O reflexo, para quem já desenvolveu, é imediato: python -m http.server, ou npx serve, e abre o navegador. Num computador é coisa de dez segundos.

Num iPhone ou num iPad esse reflexo já não tem apoio. E a verdadeira questão passa a ser: precisava mesmo de um servidor?

Porque lançamos um servidor por omissão

Porque abrir um ficheiro diretamente em file:// cria problemas reais num navegador de secretária. Os pedidos a outros ficheiros são bloqueados pela política de origem, os módulos JavaScript recusam-se a carregar e algumas API só estão disponíveis em contexto seguro.

O servidor local não está portanto lá para servir os ficheiros, que já lá estão. Está para dar uma origem à página.

Quando o servidor continua indispensável

É-o assim que faz outra coisa que não seja ler:

Em todos esses casos, monte um servidor, e faça-o a partir de uma máquina de desenvolvimento. Nenhuma app de leitura substitui isso, e este artigo não o pretende.

Quando não precisa de um

Se o seu objetivo é ler, a lista é mais curta do que se pensa. Consultar uma documentação exportada, reler um relatório gerado, percorrer um site arquivado, verificar um entregável de cliente antes de o encaminhar: nada disso exige uma origem HTTP.

O que é preciso é uma app que resolva bem os caminhos relativos e execute o CSS e o JavaScript da página. É exatamente o que faz o Pagira, no iPhone e no iPad, sem lançar nada e sem publicar nada.

  1. Coloque a pasta do site no Ficheiros ou no iCloud Drive.
  2. Abra-a com o Pagira.
  3. O site aparece com o seu layout e a sua navegação interna.

Os estilos e as páginas interativas são suportados, ver CSS e JavaScript nas páginas locais.

O que ganha em não publicar

Há uma diferença de natureza entre ler um ficheiro no seu dispositivo e enviá-lo para um serviço online para o ver. Um entregável de cliente, uma maqueta por anunciar, uma documentação interna: são conteúdos cuja difusão nem sempre lhe cabe decidir. Ficar em local elimina a questão.

E se o site vier de um gerador

As exportações de Hugo, Jekyll, MkDocs, Docusaurus ou de um notebook convertido são pastas estáticas autónomas. Leem-se tal como estão, sem build e sem servidor. O tema é tratado em detalhe em ler documentação técnica offline no iPad.

Perguntas frequentes

Os módulos JavaScript funcionam?

As páginas interativas comportam-se como esperado. Dito isto, se a sua página depende de uma API reservada a contextos seguros ou de um service worker, precisa de um servidor a sério: é um limite do modelo, não uma definição a encontrar.

Posso lançar um servidor no iOS?

Algumas apps propõem-no. Para simples leitura, acrescenta uma camada cujo único papel é contornar um problema que não tem.

E se o site chamar uma API remota?

Vai precisar de ligação, como num navegador. O que é local é o site, não os serviços que ele consulta.

Como abro a pasta?

Com Abrir com o Pagira a partir do Ficheiros. Ver abrir a partir de qualquer lado.

O site continua consultável offline?

Sim, é o ponto de partida: os ficheiros estão no dispositivo. Para uma pasta no iCloud, descarregue uma cópia offline antes de partir.