O Polymer e os componentes da Web são temas em alta atualmente e, como esse ecossistema está evoluindo rapidamente, muitas vezes pode ser difícil para os desenvolvedores ficarem a par das últimas mudanças.
Em sua palestra no Chrome Dev Summit, Matt McNulty, gerente de engenharia da equipe do Polymer, explicou o que é o Polymer e também esboçou o roteiro para o Polymer 1.0.
O que é o Polymer?
Primeiro, o que é exatamente a Polymer?
O Polymer é uma biblioteca que ajuda você a criar elementos e apps a partir de componentes da Web. Os componentes da web são um conjunto de última geração de novos padrões que permitem aos desenvolvedores ampliar o vocabulário HTML com seus próprios elementos personalizados.
Como os componentes da Web são projetados para ser um novo primitivo para o navegador, isso significa que eles são muito poderosos, mas também de nível muito baixo, e trabalhar com eles exige um pouco de código.
O Polymer facilita o trabalho dos Web Components ao "acelerar" a sintaxe. Ele reduz a quantidade de código boilerplate que você precisa escrever e adiciona um estilo declarativo. Assim, criar componentes da Web é tão fácil quanto escrever HTML.
Experimento do Polymer
O Polymer começou como um experimento para ver se podíamos aplicar polyfills aos padrões do Web Component e receber feedback dos desenvolvedores antes que essas tecnologias fossem lançadas em todos os navegadores. À medida que mais desenvolvedores começaram a usar o Polymer, ele deixou de ser apenas polyfills para uma biblioteca real repleta de recursos de produtividade (vinculação de dados, observadores de alteração de atributos, localização automática de nós etc.). Mas todos os experimentos têm resultados. Então, como nos saímos?
Embora muitos desenvolvedores tenham dito que gostaram da expressividade e dos ganhos de produtividade de trabalhar com componentes da Web no Polymer, eles também expressaram preocupações sobre o desempenho e a complexidade geral.
Ele destaca uma tensão natural que o Polymer teve desde o início: ser um experimento para levar a plataforma da Web adiante, mas também criar algo digno de produção, do qual os desenvolvedores possam confiar.
Próximas mudanças
A equipe do Polymer analisou com atenção todos os recursos da biblioteca com o objetivo de criar uma versão mais enxuta e pronta para produção que os desenvolvedores possam usar com tranquilidade.
Camadas
A plataforma Polymer foi refatorada em uma série de camadas. Os recursos principais são rápidos e simples, enquanto os mais avançados precisam ser ativados. Na maioria dos casos de uso, os recursos principais precisam atender às necessidades dos desenvolvedores.
Vinculação de dados simplificada
O sistema de vinculação de dados da Polymer também foi significativamente otimizado para melhorar o desempenho. Seguindo a abordagem em camadas, a vinculação bidirecional agora é de aceitação, com o padrão sendo vinculações unidirecionais. Além disso, os tipos de propriedade publicados ficaram explícitos, e uma mudança de propriedade agora dispara um evento para ajudar os elementos de diferentes bibliotecas a se comunicarem com mais facilidade.
DOM do Leaner Shadow
O polyfill do Shadow DOM é um feito incrível de engenharia. Ele foi projetado para ser abrangente e obedecer às especificações, o que é importante para testar completamente o primitivo da plataforma, mas infelizmente apresenta vários gargalos de desempenho para recursos que o Polymer não usa.
A próxima versão do Polymer terá uma abordagem diferente, empregando uma camada no estilo paliativo que usa polyfills apenas para as necessidades da plataforma.
O polyfill existente será ativado para componentes da Web genéricos e que não sejam da plataforma Polymer.
Movendo para webcomponents.org
Por falar em polyfills, eles também estão ganhando um novo lar. No momento, muitos desenvolvedores estão confusos sobre a relação entre a plataforma Polymer e os componentes da Web. Alguns acham que é preciso usar todo o Polymer para usar Web Components, quando, na verdade, você só precisa dos polyfills.
Para deixar essa distinção mais clara, os polyfills estão sendo movidos para webcomponents.org e renomeados como webcomponents.js
.
Esse movimento foi desenvolvido para ajudar outros autores de bibliotecas a aproveitar os polyfills sem qualquer confusão. A equipe do Polymer continuará contribuindo com os polyfills, mas a esperança é que essa mudança os torne um recurso mais compartilhado para a comunidade.
Resultados
Quais são os resultados de todas essas mudanças?
Velocidade
No Chrome, a plataforma Polymer agora está cinco vezes mais rápida, e no Safari ela foi oito vezes mais rápida (links em inglês).
Tamanho do arquivo
O tamanho do arquivo também foi reduzido em 87%, de 123 KB para 15 KB (6 KB compactado como gzip).
Roteiro
Haverá algumas alterações interruptivas da API na próxima versão, representadas pelo novo número de versão (0.8), mas a equipe quer deixar claro que isso não é uma reescrita. Migrar seu projeto atual da versão 0.5 para o 0.8 do Polymer será bem simples.
A equipe do Polymer também definiu um roteiro para oferecer aos desenvolvedores mais clareza sobre as próximas versões.
A prévia 0.8 está disponível agora como uma ramificação no GitHub (embora ainda esteja em desenvolvimento muito ativo e não tenha documentação). A versão Beta oficial da versão 0.9 está planejada para o primeiro trimestre de 2015, e a versão 1.0 será lançada no segundo trimestre.
O experimento foi concluído
Com todas as mudanças recentes no Polymer, a equipe por trás dele está estabelecendo as bases para que os Web Components se tornem parte integrante da pilha de todos os desenvolvedores. Se você não conhece o Web Components, agora é um ótimo momento para dar uma olhada e se familiarizar com essas tecnologias transformadoras. Se você já trabalha com componentes (e com o Polymer), o futuro parece promissor. Fique de olho no blog do Polymer para ficar por dentro das atualizações mais recentes e inscreva-se na lista de e-mails do Polymer para perguntas ou comentários. Aproveite!