Confira os destaques do Chrome 124:
- Há duas novas APIs que permitem que o DOM paralelo declarativo seja usado no JavaScript.
- É possível usar streams em WebSockets.
- As Transições de visualização ficam um pouco melhores.
- E há muito mais.
Quer a seleção completa? Confira as notas da versão do Chrome 124.
Usar o DOM paralelo declarativo em JavaScript
Há duas novas APIs que permitem que o DOM sombra declarativo seja usado no JavaScript.
setHTMLUnsafe()
é semelhante a innerHTML
e permite definir o HTML interno de
um elemento para a string fornecida. Isso é útil quando você tem
HTML que inclua um shadow DOM declarativo, como este.
<my-custom-element>
<template shadowrootmode="open">
<style>
:host {
display: block;
color: yellow;
}
</style>
Hello, <slot></slot>
</template>
</my-custom-element>
Se você usar apenas innerHTML
, o navegador não vai analisar corretamente e não haverá
DOM paralelo. Mas com setHTMLUnsafe()
, o shadow DOM é criado e o
elemento é analisado como esperado.
const section = document.createElement("section");
section.setHTMLUnsafe(`<my-custom-element>...</my-custom-element>`);
A outra API é parseHTMLUnsafe()
, e funciona de maneira semelhante a
DOMParser.parseFromString()
.
Ambas as APIs são não seguras, o que significa que elas não fazem nenhuma limpeza de entrada. Por isso, você precisa garantir que tudo o que você alimentá-los esteja seguro. Em uma versão futura, esperamos que haja uma versão que forneça a limpeza da entrada.
Por fim, essas duas APIs já são compatíveis com a versão mais recente do Firefox e do Safari.
API WebSocket Stream
Os WebSockets são uma ótima maneira de enviar dados de um lado para o outro entre o navegador do usuário e o servidor sem precisar depender de polling. Isso é ótimo para apps de chat, em que você quer lidar com as informações assim que elas chegam.
Mas e se os dados chegarem mais rápido do que você consegue lidar?
Isso é chamado de pressão de retorno e pode causar dores de cabeça. Infelizmente, a API WebSocket não tem uma maneira legal de lidar com a pressão.
A API WebSocket Stream oferece a você a capacidade de streams e sockets da Web, o que significa que a pressão de retorno pode ser aplicada sem custo extra.
Comece criando uma nova WebSocketStream
e transmitindo o URL do
servidor WebSocket.
const wss = new WebSocketStream(WSS_URL);
const {readable, writable} = await wss.opened;
const reader = readable.getReader();
const writer = writable.getWriter();
while (true) {
const {value, done} = await reader.read();
if (done) {
break;
}
const result = await process(value);
await writer.write(result);
}
Em seguida, você espera que a conexão seja aberta, o que resulta
em um ReadableStream
e um WritableStream
. Ao chamar o
método ReadableStream.getReader()
, você recebe um ReadableStreamDefaultReader
do qual pode read()
dados até que o fluxo seja concluído.
Para gravar dados, chame o método WritableStream.getWriter()
, que fornece um
WritableStreamDefaultWriter
, para o qual você pode write()
dados.
Conferir melhorias nas transições
Estou empolgado com os recursos de transições de visualização. Dois novos recursos no Chrome 124 foram criados para facilitar as transições de visualização.
O evento pageswap
é acionado no objeto de janela de um documento quando uma navegação
substitui o documento por um novo.
document.addEventListener("pageswap", event => {
if (!event.viewTransition) {
return;
}
});
E o bloqueio de renderização de documentos, que permite bloquear a renderização de um documento até que o conteúdo crítico seja analisado, garantindo uma primeira pintura consistente em todos os navegadores.
E muito mais.
Claro que há muito mais.
disallowReturnToOpener
indica ao navegador que não é necessário mostrar um botão na janela de imagem em miniatura que permita ao usuário voltar à guia de abertura.Os contêineres de rolagem com foco no teclado melhoram a acessibilidade tornando os contêineres de rolagem focalizáveis usando a navegação de foco sequencial.
E a instalação universal permite que os usuários instalem qualquer página, mesmo aquelas que não atendem aos critérios atuais de PWA.
Leitura adicional
Isso inclui apenas alguns destaques importantes. Confira os links a seguir para ver outras mudanças no Chrome 124.
- Notas da versão do Chrome 124
- Novidades do Chrome DevTools (124)
- Atualizações do ChromeStatus.com para o Chrome 124
- Lista de mudanças no repositório de origem do Chromium
- Agenda 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 125 for lançado, estaremos aqui para contar as novidades do Chrome!