Frameworks Javascript como React (sim, é um framework), Vue e Angular auxiliam bastante no desenvolvimento de aplicações web. Um ecossistema foi gerado em torno de cada um deles e o que se vê hoje em dia é uma comunidade Javascript fragmentada que praticamente não se conversa.

Como fazer um componente escrito pra funcionar no React também funcionar no Angular? Ou no Vue? Algumas horas e um pouco de dor de cabeça serão necessárias para fazer funcionar essa compatibilidade. Para piorar as coisas, se vê mais pessoas entrando na área de desenvolvimento como “Desenvolvedor React” ou “Desenvolvedor Angular” e por aí vai. Isso só ajuda a fragmentar ainda mais a comunidade Javascript.

A solução para este problema - se é que foi desenvolvido para ser uma solução - são os chamados WebComponents. É o elo perdido entre os ditos frameworks. Pouco se comenta sobre eles em cada uma das comunidades. Já parou para se perguntar por quê? É simples. Seus mantenedores querem que outros desenvolvedores usem a ferramenta que eles criaram como a solução para “escrever menos código”. Os criadores possuem produtos que usam a tal ferramenta, o que justifica a sua existência. Essas ferramentas sendo adotadas em massa, ajudam as empresas que as mantem (Google, Facebook e AliExpress) sempre com pessoas dispostas a resolverem bugs para elas. Não que isso seja um problema já que o desenvolvedor que não trabalha nessas empresas está adquirindo conhecimento da mesma forma, mas pouco se vê uma discussão sobre como resolver um problema utilizando Vanilla JS. É sempre “como fazer/resolver x com react/angular/vue”. Soluções boas são criadas no clubinho e não se vê muito movimento de torná-los compatíveis com outros frameworks. No final, é tudo Javascript #soquenao.

Poucos perceberam que esses frameworks surgiram para resolver um problema que hoje é perfeitamente possível resolver sem ele.

Enquanto isso…

Mais uma vaga “Desenvolvedor React” é criada no Linkedin.
Outra vaga “Desenvolvedor Angular” é criada no Linkedin.
Vagas como “Desenvolvedor Javascript” estão sumindo…

Ainda tem aqueles desenvolvedores que utilizam React pra tudo. Às vezes, um simples site com uma única interação possível a pessoa já considera usar React e Redux. Vai com calma, cidadão! Nem tudo é prego pra você usar o seu martelo.

“WebComponents é difícil de ler e manter.”

Pode até ser verdade, mas você já parou pra analisar opções que facilitam o desenvolvimento com WebComponents? Já ouviu falar do lit-html, LitElement e haunted?

Eu tentando contribuir para maior adoção dos WebComponents, criei um repositório chamado Don’t need a framework onde a ideia é reunir exemplos de como resolver certos problemas corriqueiros com WebComponents. Anunciei o projeto num grupo do Slack e alguém me fez essa pergunta:

“Não usar React, mas usar uma lib (haunted) que simula uma funcionalidade do React?”

E quem disse que isso é exclusivo do React? Já parou pra ver o código fonte da biblioteca? Não achei nenhuma implementação do React nela. Se achar, por favor, me avise.

Se você ainda não sabe, existe uma hashtag chamada #usetheplatform que basicamente advoga sobre o uso da plataforma web do jeito que ela é para desenvolvimento de aplicações. Hoje é perfeitamente possível manter um projeto só com WebComponents aproveitando o modelo evergreen de atualização que navegadores utilizam. Se você não pode se dar ao luxo de fazer uma aplicação sem pensar em navegadores antigos, há as soluções de builders que ajudam nessa questão como Webpack, Rollup ou Parcel.

“Eu não sei se o navegador suporta o que eu quero fazer…”

O site Can I use pode te informar se você pode usar a sua nova feature motherfucker do js ou não.

Eu tenho a impressão que os fãs de React são os primeiros a darem chilique quando se fala de WebComponents. Isso se confirma? Se sim, porque isso? Qual é a birra?

Os anos vão passando e o seu framework favorito vai se tornando cada vez mais irrelevante com o avanço do Javascript.

“Mas é o framework x que paga minhas contas!”

Sério? Até quando?