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.
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