Veja o que é necessário saber:
- Há um novo código de status HTTP 103 que ajuda o navegador a decidir qual conteúdo carregar antes mesmo da página começar a chegar.
- A API Local Font Access oferece aos aplicativos da Web a capacidade de enumerar e usar as fontes instaladas no computador do usuário.
AbortSignal.timeout()
é uma maneira mais fácil de implementar tempos limite em APIs assíncronas.- E tem muito mais.
Meu nome é Pete LePage. Vamos nos aprofundar e ver as novidades para desenvolvedores no Chrome 103.
Código de status HTTP 103 103: dicas iniciais
Uma maneira de melhorar o desempenho da página é usar dicas de recursos. Elas dão "dicas" ao navegador sobre o que ele pode precisar mais tarde. Por exemplo, pré-carregar arquivos ou conectar-se a um servidor diferente.
<link as="font" crossorigin="anonymous"
href="..." rel="preload">
<link as="font" crossorigin="anonymous"
href="..." rel="preload">
<link href="cdn.example.com"
rel="preconnect">
No entanto, o navegador não pode agir com base nessas dicas até que o servidor envie pelo menos parte da página.
Imagine que o navegador solicita uma página, mas o servidor precisa de algumas centenas de milissegundos para gerá-la. Até que o navegador comece a receber a página, ele fica parado e espera. No entanto, se o servidor souber que a página sempre precisará de um determinado conjunto de subrecursos, por exemplo, um arquivo CSS, alguns JavaScripts e algumas imagens, ele poderá responder imediatamente com o novo código de status HTTP 103 Early Hints e solicitar que o navegador carregue esses subrecursos.
Depois que o servidor gera a página, ele pode enviá-la com a resposta HTTP 200 normal. À medida que a página é exibida, o navegador já começou a carregar os recursos necessários.
Como esse é um novo código de status HTTP, seu uso exige atualizações no servidor.
Começar a usar o HTTP 103 Dicas iniciais:
- Explicação para dicas iniciais
- Configuração do Apache 2 Early Hints
- Como usar as dicas iniciais no Cloudflare
- Fastly Beyond Server Push: o código de status 103 de dicas antecipadas
API Local Font Access
As fontes na Web sempre foram um desafio, especialmente para apps que permitem que os usuários criem os próprios gráficos e designs. Até agora, os apps da Web só podiam usar fontes da Web. Não havia como conseguir uma lista de fontes que o usuário tinha instalado no computador. Além disso, não havia como acessar os dados completos da tabela de fontes, o que é essencial se você precisar implementar sua própria pilha de texto personalizada.
A nova API Local Fonts Access permite que os aplicativos da Web enumerem as fontes locais no dispositivo do usuário e oferece acesso aos dados da tabela de fontes.
Para receber uma lista de fontes instaladas no dispositivo, primeiro é necessário solicitar permissão.
// Ask for permission to use the API
try {
const status = await navigator.permissions.request({
name: 'local-fonts',
});
if (status.state !== 'granted') {
throw new Error('No Permission.');
}
} catch (err) {
if (err.name !== 'TypeError') {
throw err;
}
}
Em seguida, chame window.queryLocalFonts()
. Ela retorna uma matriz de todas as fontes
instaladas no dispositivo do usuário.
const opts = {};
const pickedFonts = await self.queryLocalFonts();
for (const fontData of pickedFonts) {
console.log(fontData.postscriptName);
console.log(fontData.fullName);
console.log(fontData.family);
console.log(fontData.style);
}
Se você tiver interesse apenas em um subconjunto de fontes, filtre-as adicionando
um parâmetro postscriptNames
.
const opts = {
postscriptNames: [
'Verdana',
'Verdana-Bold',
'Verdana-Italic',
],
};
const pickedFonts = await self.queryLocalFonts(opts);
Confira o artigo do Tom Usar tipografia avançada com fontes locais (em inglês) no web.dev para ver mais detalhes.
Tempos limite mais fáceis com AbortSignal.timeout()
Em JavaScript, AbortController
e AbortSignal
são usados para cancelar uma
chamada assíncrona.
Por exemplo, ao fazer uma solicitação fetch()
, você pode criar um
AbortSignal
e transmiti-lo para fetch()
. Se você quiser cancelar o fetch()
antes que ele retorne, chame abort()
na instância do AbortSignal
. Até
agora, se você quisesse que ele fosse abortado após um período específico, seria necessário envolvê-lo em um setTimeout()
.
const controller = new AbortController();
const signal = controller.signal;
const resp = fetch(url, { signal });
setTimeout(() => {
// abort the fetch after 6 seconds
controller.abort();
}, 6000);
Felizmente, isso ficou mais fácil com um novo método estático timeout()
em
AbortSignal
. Ele retorna um objeto AbortSignal
que é abortado automaticamente
após o número especificado de milissegundos. O que costumava ser um punhado de
linhas de código agora é apenas uma.
const signal = AbortSignal.timeout(6000);
const resp = fetch(url, { signal });
O AbortSignal.timeout()
é compatível com o Chrome 103 e já está disponível no Firefox e no Safari.
E muito mais.
Claro que há muito mais.
- O formato de arquivo de imagem
avif
agora pode ser compartilhado pelo Compartilhamento na Web - O Chromium agora corresponde ao Firefox disparando
popstate
imediatamente após as mudanças de URL. A ordem dos eventos agora é:popstate
e depoishashchange
em ambas as plataformas. - E
Element.isVisible()
informa se um elemento está visível ou não.
Leitura adicional
Isso abrange apenas alguns dos principais destaques. Confira as mudanças adicionais no Chrome 103 nos links abaixo.
- Novidades do Chrome DevTools (103)
- Remoção e descontinuação de recursos do Chrome 103
- Atualizações do ChromeStatus.com para o Chrome 103
- Lista de mudanças no repositório de origem do Chromium
- Calendário de lançamentos do Chrome
Inscrever-se
Para ficar por dentro das novidades, inscreva-se no canal do YouTube para desenvolvedores do Chrome e receba uma notificação por e-mail sempre que lançarmos um novo vídeo.
Meu nome é Pete LePage, e assim que o Chrome 104 for lançado, estarei aqui para contar as novidades do Chrome.