Confira os destaques do Chrome 124:
- Há duas novas APIs que permitem que o DOM sombra 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 saber todos os detalhes? 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 ajuda quando você tem um
HTML que inclui um DOM paralelo 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 ela 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. Então, você precisa ter certeza de que o que você alimenta é 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á têm suporte na 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ê pode processar?
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 de volta.
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 nenhum 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 animado com os recursos de transição de visualização, e há dois novos recursos no Chrome 124 projetados 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 abrange 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 do 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 125 for lançado, vamos informar as novidades do Chrome.