Temos o prazer de anunciar a versão alfa do WorkerDOM, uma biblioteca JavaScript que disponibiliza o modelo de objeto de documento, ou DOM, para os web workers. Isso dá aos desenvolvedores web a possibilidade de aproveitar as arquiteturas de processador multinúcleo mais usadas na hora de programar páginas web e deixá-las mais eficientes. Como a biblioteca WorkerDOM foi criada para programação web em geral, também planejamos usá-la no AMP Project. Vamos detalhar esse plano mais adiante.

A Web Worker API já está disponível para desenvolvedores web há quase 10 anos, mas ainda não foi adotada de forma generalizada. Um dos motivos é que a API principal para manipular páginas web, o DOM, não estava disponível dentro dos workers. É aí que entra o WorkerDOM, permitindo que os desenvolvedores migrem seus aplicativos com mais facilidade. Nossa esperança é que isso gere um novo interesse em programação multiencadeamento na web e leve à criação de experiências de usuário muito melhores no futuro.

Nossa pesquisa mostrou que o desempenho da CPU de núcleo simples em dispositivos mais baratos não evoluiu muito ao longo dos últimos anos. A conclusão que se tira, em se tratando de núcleo simples, é que os dispositivos móveis ficaram mais baratos, mas não mais rápidos. Existe uma enorme oportunidade em usar os núcleos extras que até mesmo as CPUs mais baratas têm e que, normalmente, não estão disponíveis para programação em JavaScript. Para fazer o desempenho na web competir de verdade com o das plataformas nativas, devemos tentar obter acesso a esse desempenho adicional para oferecer experiências melhores e mais modernas nos mais diversos dispositivos que as pessoas usam.

Captura de tela em 21 de agosto de 2018, às 10h45m37s
Nem todos os dispositivos móveis são desenvolvidos da mesma forma.

O objetivo do WorkerDOM é oferecer uma representação completa do DOM dentro dos web workers. Em um cenário ideal, isso significa que os scripts podem ser usados sem alteração dentro do ambiente do worker. A base da biblioteca é um mecanismo de transporte eficiente escrito em TypeScript. Ele "hidrata" o DOM renderizado no servidor e cria um proxy para as mutações à medida que um aplicativo faz alterações na página, como ao reagir a ações do usuário ou executar animações. Para ver mais detalhes sobre como a biblioteca WorkerDOM funciona e conhecer possíveis casos de uso, dê uma olhada nos slides da nossa apresentação na JSConf US 2018.

Como anunciado na AMP Conf 2018, o AMP Project está trabalhando em uma empreitada de longo prazo para disponibilizar programação em JavaScript a criadores de páginas AMP. A biblioteca WorkerDOM é fundamental para essa iniciativa. Estamos muito empolgados por poder integrá-la ao AMP, o que planejamos fazer ainda esse ano. O WorkerDOM é compatível com estruturas como o React, o Preact e o Svelte — e ainda tem mais pela frente. Será incrível ver todas essas estruturas usadas para criar páginas AMP no futuro!

A versão de hoje é a alfa. A WorkerDOM está pronta para testes, mas ainda não para uso maciço em produção. Adoraríamos colaborar com criadores de estruturas e ferramentas para oferecer compatibilidade e a melhor experiência possível ao desenvolvedor no WorkerDOM e em todos os locais e contextos possíveis!

Kristofer Baxter, engenheiro de software do Google