Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O conversor de temperatura de exemplo Progressive Web App (PWA)
Veja também:
- /temperature-converter/ - diretório de código fonte.
Descrição geral dos ficheiros de código fonte
O exemplo de Aplicação Web Progressiva (PWA) consiste nos seguintes ficheiros, no diretório de /Demos/temperature-converter/ código fonte:
| Arquivo | Descrição | Secção abaixo |
|---|---|---|
index.html |
A página Web inicial que define o conteúdo e os controlos que aparecem na IU da aplicação. Este PWA de exemplo tem uma única página Web. |
A página Web inicial da aplicação (index.html) |
converter.css |
O ficheiro Folhas de Estilos em Cascata (CSS) define o estilo para a página Web da aplicação; o estilo de esquema de cada controlo de IU na página principal da aplicação. |
O ficheiro de lógica da aplicação JavaScript (converter.js) |
converter.js |
Lógica da aplicação, como código JavaScript. |
O ficheiro de lógica da aplicação JavaScript (converter.js) |
manifest.json |
Informações básicas sobre a aplicação, para o sistema operativo do dispositivo utilizar. Ficheiro de manifesto que torna a Aplicação Web Progressiva (PWA) instalável no dispositivo, ao contrário de uma aplicação Web normal. |
O manifesto da aplicação Web (manifest.json) |
icon512.png |
Ficheiro de imagem para representar a aplicação no browser e no dispositivo local. |
O ficheiro de imagem a representar a aplicação (icon512.png) |
sw.js |
Função de trabalho de serviço que coloca ficheiros de front-end em cache no dispositivo local e serve os ficheiros em cache quando não existe ligação à Internet. |
A função de trabalho de serviço para colocar em cache os ficheiros da aplicação no dispositivo local (sw.js) |
README.md |
Informações breves sobre a aplicação, para pessoas que estão a ver o diretório de código fonte; contém uma ligação para aceder à aplicação em direto a partir do servidor Web github.io e uma ligação para o artigo atual. |
O ficheiro Readme para explicar o diretório de ficheiros de origem (README.md) |
Os detalhes sobre cada ficheiro estão abaixo.
A página Web inicial da aplicação (index.html)
index.html define a primeira página que os utilizadores veem quando acedem à Aplicação Web Progressiva (PWA).
index.html define o conteúdo da página Web da Aplicação Web Progressiva (PWA), incluindo o texto, imagens, campos de texto e botões que aparecem na interface de utilizador.
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="icon" type="image/png" href="./icon512.png">
<link rel="stylesheet" href="./converter.css">
<link rel="manifest" href="./manifest.json">
<title>Temperature converter</title>
</head>
<body>
<form id="converter">
...
</form>
<script src="./converter.js"></script>
<script>
if('serviceWorker' in navigator) {
navigator.serviceWorker.register('./sw.js', { scope: './' });
}
</script>
</body>
</html>
Como index.html referencia o ficheiro CSS
index.html referencia o converter.css ficheiro CSS através de uma linha de código que está dentro da <head> etiqueta:
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="icon" type="image/png" href="./icon512.png">
<link rel="stylesheet" href="./converter.css">
<link rel="manifest" href="./manifest.json">
<title>Temperature converter</title>
</head>
Como index.html carrega o ficheiro JavaScript
Em index.html, após a etiqueta de fecho </form> , um <script> elemento carrega converter.js:
<output name="output-temp" id="output-temp" for="input-temp input-unit output-unit">68 F</output>
</form>
<script src="./converter.js"></script>
Por outro lado, converter.js faz referência a : converter do idformulário na seguinte linha:
const form = document.getElementById('converter');
Como index.html referencia o manifesto
Dentro da <head> etiqueta, um <link> elemento referencia manifest.json:
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="icon" type="image/png" href="./icon512.png">
<link rel="stylesheet" href="./converter.css">
<link rel="manifest" href="./manifest.json">
<title>Temperature converter</title>
</head>
Este <link rel="manifest" href="./manifest.json"> elemento liga o ficheiro de manifesto da aplicação Web à aplicação, tornando a aplicação Web uma Aplicação Web Progressiva (PWA).
O nome manifest.json do ficheiro é apenas uma convenção comum, não um requisito estrito. Por exemplo, pode alterar o nome do ficheiro de manifesto para abcd.jsone modificar a linha em index.html como:
<link rel="manifest" href="./abcd.json">
Como index.html referencia a função de trabalho de serviço
<script> Num elemento no final da etiqueta, o ficheiro sw.js de <body> trabalho de serviço é registado ao chamar navigator.serviceWorker.register():
<output name="output-temp" id="output-temp" for="input-temp input-unit output-unit">68 F</output>
</form>
<script src="./converter.js"></script>
<script>
if('serviceWorker' in navigator) {
navigator.serviceWorker.register('./sw.js', { scope: './' });
}
</script>
</body>
O ficheiro de folha de estilos CSS (converter.css)
converter.css define o estilo da página Web da Aplicação Web Progressiva (PWA), ao utilizar regras CSS (Cascading Style Sheet) para organizar o conteúdo HTML num esquema e fornecer estilos para elementos.
A aplicação Web tem regras de estilo CSS para tornar a aplicação visualmente apelativa.
O ficheiro CSS está converter.css no diretório do exemplo (/Demos/temperature-converter/), incluindo o seguinte código:
html {
background: rgb(243, 243, 243);
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
font-size: 15pt;
}
html, body {
height: 100%;
margin: 0;
}
body {
display: grid;
place-items: center;
}
#converter {
...
}
#converter input, #converter select {
...
}
#converter #output-temp {
...
}
O ficheiro de lógica da aplicação JavaScript (converter.js)
Para que o conversor de temperatura funcione, o exemplo utiliza código JavaScript, em converter.js.
converter.js contém a lógica da aplicação para a Aplicação Web Progressiva (PWA). O código JavaScript adiciona interações do utilizador à interface de utilizador.
const inputField = document.getElementById('input-temp');
const fromUnitField = document.getElementById('input-unit');
const toUnitField = document.getElementById('output-unit');
const outputField = document.getElementById('output-temp');
const form = document.getElementById('converter');
function convertTemp(value, fromUnit, toUnit) {
if (fromUnit === 'c') {
...
return value;
}
throw new Error('Invalid unit');
}
form.addEventListener('input', () => {
const inputTemp = parseFloat(inputField.value);
...
outputField.value = (Math.round(outputTemp * 100) / 100) + ' ' + toUnit.toUpperCase();
});
O manifesto da aplicação Web (manifest.json)
manifest.json fornece informações básicas sobre a Aplicação Web Progressiva (PWA), para o sistema operativo do dispositivo utilizar. O código JSON descreve a aplicação para o sistema operativo anfitrião.
{
"lang": "en-us",
"name": "Temperature converter app",
"short_name": "Temperature converter",
"description": "A basic temperature converter application that can convert to and from Celsius, Kelvin, and Fahrenheit",
"start_url": "./",
"background_color": "#2f3d58",
"theme_color": "#2f3d58",
"orientation": "any",
"display": "standalone",
"icons": [
{
"src": "./icon512.png",
"sizes": "512x512"
}
]
}
Veja também:
-
O manifesto da aplicação Web (
manifest.json) em Começar a desenvolver um PWA.
O ficheiro de imagem a representar a aplicação (icon512.png)
icon512.png é uma imagem de ícone de aplicação de 512x512 píxeis. Este ficheiro de imagem representa a Aplicação Web Progressiva (PWA), como na barra de tarefas do Windows e no Menu Iniciar do Windows:
A função de trabalho de serviço para colocar em cache os ficheiros da aplicação no dispositivo local (sw.js)
sw.js é uma função de trabalho de serviço que gere ficheiros de colocação em cache que fazem parte da Aplicação Web Progressiva (PWA), colocando os ficheiros em cache na unidade local e servindo-os quando não há ligação à Internet.
const CACHE_NAME = `temperature-converter-v1`;
// Use the install event to pre-cache all initial resources.
self.addEventListener('install', event => {
event.waitUntil((async () => {
const cache = await caches.open(CACHE_NAME);
cache.addAll([
'./',
'./converter.js',
'./converter.css'
]);
})());
});
self.addEventListener('fetch', event => {
event.respondWith((async () => {
const cache = await caches.open(CACHE_NAME);
// Get the resource from the cache.
const cachedResponse = await cache.match(event.request);
if (cachedResponse) {
return cachedResponse;
} else {
try {
// If the resource was not in the cache, try the network.
const fetchResponse = await fetch(event.request);
// Save the resource in the cache and return it.
cache.put(event.request, fetchResponse.clone());
return fetchResponse;
} catch (e) {
// The network failed
}
}
})());
});
A função de trabalho de serviço adiciona três ficheiros à cache, explicitamente (.html, .css, e .js). O ícone (.png) e o manifesto (.json) são colocados em cache automaticamente pelo browser.
Veja também:
-
A função de trabalho de serviço para colocar em cache os ficheiros da aplicação no dispositivo local (
sw.js) em Começar a desenvolver um PWA.
O ficheiro Readme para explicar o diretório de ficheiros de origem (README.md)
README.md contém informações breves sobre a Aplicação Web Progressiva (PWA):
- Uma ligação para abrir a página Web da aplicação.
- Uma ligação para o artigo De exemplo conversor de temperatura .
O diretório principal do código fonte de uma Aplicação Web Progressiva (PWA) pode conter um ficheiro Readme. Os utilizadores finais da aplicação não veem o diretório de código fonte ou o ficheiro Readme.
Confira também
-
O manifesto da aplicação Web (
manifest.json) em Começar a desenvolver um PWA. -
A função de trabalho de serviço para colocar em cache os ficheiros da aplicação no dispositivo local (
sw.js) em Começar a desenvolver um PWA. - Artigo de exemplo do conversor de temperatura .
Código fonte: