2 pontos por GN⁺ 2024-10-01 | 1 comentários | Compartilhar no WhatsApp

Web Components são aceitáveis

  • A comunidade de desenvolvimento web frequentemente debate Web Components
  • Ryan Carniato escreveu o texto "Web Components Are Not the Future", e Cory LaViska respondeu com "Web Components Are Not the Future — They’re the Present"
  • O autor tenta encerrar esse debate de forma pacífica

Desempenho

  • Web Components se baseiam em Custom Elements, então toda a interface é processada por meio do DOM
  • Minimizar nós do DOM é um ponto central da otimização de desempenho
  • Porém, desempenho não é tudo; também é preciso considerar outros fatores, como manutenibilidade, segurança, usabilidade e acessibilidade
  • Por exemplo, deixar de renderizar atributos aria-* pode melhorar o desempenho, mas eles são indispensáveis para acessibilidade
  • A otimização de desempenho é importante, mas, na prática, problemas mais simples como layout thrashing, network waterfall e rerenderizações desnecessárias costumam ter impacto maior no desempenho

O custo dos padrões

  • Dar suporte a padrões exige escrever e executar código adicional
  • Ainda assim, suportar Web Components não representa uma grande carga
  • Considerar novos recursos da plataforma web é algo natural, e isso também vale para Symbols, Proxys, Promises etc.
  • Parte da comunidade de desenvolvimento web pode não querer dar suporte a Web Components, e tudo bem
  • A web é uma grande tenda que permite diversas abordagens

Conclusão

  • Web Components, por si só, não são um problema, mas a promessa de que podem substituir tudo é arriscada
  • Web Components têm pontos fracos em server-side rendering, acessibilidade e interoperabilidade
  • Outras frameworks como React, Solid e Svelte ainda brilham em certas áreas
  • A web é usada para finalidades variadas, e isso oferece oportunidades para expressar criatividade
  • Web Components podem não ser adequados para você, e tudo bem

# Resumo do GN⁺

  • Este texto apresenta diferentes perspectivas sobre Web Components e enfatiza o equilíbrio entre desempenho e outros fatores
  • Web Components não podem substituir tudo, mas são adequados para usos específicos
  • A comunidade de desenvolvimento web permite diferentes abordagens, o que estimula a criatividade
  • Se Web Components não forem adequados para você, é possível usar outras frameworks
  • As diversas capacidades da web oferecem novas oportunidades de expressão criativa

1 comentários

 
GN⁺ 2024-10-01
Comentários no Hacker News
  • Sentiu que faltaram argumentos convincentes no artigo "Web Components Are Not the Future"

    • O estado atual dos frameworks de frontend é confuso
    • Não quer aprender frameworks complexos
    • Não quer funcionalidades mágicas que não dá para entender sem documentação
    • Web Components são intuitivos e oferecem isolamento por meio do Shadow DOM
    • Acha que, da era React, só o JSX deveria ser mantido
  • As opiniões divergem porque as pessoas buscam otimizações diferentes

    • Em startups financiadas por VC, frameworks podem ser adequados
    • Em laboratórios acadêmicos, Web Components com menor custo de manutenção são melhores
    • A experiência de migrar de Vue para Web Components foi muito boa
    • Com menos dependências, ficou mais fácil de gerenciar
  • O Svelte oferece suporte à criação de Web Components por meio da Custom Elements API

    • O Svelte compila para JS/HTML/CSS e facilita a criação de componentes reutilizáveis
  • Acha que Web Components não tornam a vida de desenvolvedores full stack melhor

    • A maioria dos exemplos não passa de aplicar templates de dados em HTML
    • Isso já pode ser feito com Handlebars
  • Web Components e Shadow DOM podem atrapalhar o funcionamento de extensões de navegador

    • Os vendors de navegador não parecem ter pressa para resolver esse problema
  • Interoperabilidade vem com custo de desempenho

    • Vários frameworks têm seus próprios runtimes, o que pode causar perda de performance
    • Web Components estão tecnicamente defasados e aumentam a complexidade
  • Acha que Web Components podem resolver os problemas atuais do frontend

    • Têm ótimo desempenho e permitem rolagem suave em tabelas de dados
    • Está preparando uma biblioteca de Web Components
  • Herdou uma base de código JS com 250.000 linhas e está refatorando para Web Components

    • Reduziu o código em 50.000 linhas
    • Isso ajuda a entender como o código existente funciona
  • Web Components podem funcionar mesmo sem JS

    • Já usou algumas vezes para progressive enhancement
    • Funcionam bem com renderização no lado do servidor
  • Frameworks e Web Components são ferramentas para resolver problemas diferentes

    • Frameworks cuidam da renderização da view de acordo com o estado
    • Web Components não resolvem o problema de gerenciamento de estado
    • Acha que os dois podem coexistir