Você não é o primeiro a fazer esta pergunta :) Deixe-me esclarecer algumas coisas antes de responder às suas perguntas.
A Polymer's webcomponents.js
é uma biblioteca que contém vários polyfills para várias APIs do W3C que se enquadram no guarda-chuva Web Components. Esses são:
- Elementos personalizados
- Importações HTML
<template>
- DOM da sombra
- Eventos de ponteiro
- outras
A navegação esquerda na documentação ( polymer-project.org ) possui uma página para todas essas "tecnologias de plataforma". Cada uma dessas páginas também possui um ponteiro para o polyfill individual.
<link rel="import" href="x-foo.html">
é uma importação de HTML. As importações são uma ferramenta útil para incluir HTML em outro HTML. Você pode incluir <script>
, <link>
marcação ou qualquer outra coisa em uma importação.
Nada "liga" <x-foo>
ao x-foo.html. No seu exemplo, supõe-se que a definição de elemento personalizado de <x-foo>
(por exemplo <element name="x-foo">
) seja definida em x-foo.html. Quando o navegador vê essa definição, ela é registrada como um novo elemento.
Para as perguntas!
Qual é a diferença entre Angular e Polímero?
Cobrimos parte disso em nosso vídeo de perguntas e respostas . Em geral, o Polymer é uma biblioteca que visa usar (e mostrar como usar) Web Components. Sua base são os elementos personalizados (por exemplo, tudo o que você constrói é um componente da web) e evolui à medida que a web evolui. Para esse fim, suportamos apenas a versão mais recente dos navegadores modernos.
Usarei esta imagem para descrever toda a pilha de arquitetura do Polymer:
Camada VERMELHA: obtemos a web de amanhã através de um conjunto de polyfills. Lembre-se de que essas bibliotecas desaparecem com o tempo, à medida que os navegadores adotam as novas APIs.
Camada AMARELA: Polvilhe um pouco de açúcar com polymer.js. Essa camada é nossa opinião sobre como usar as APIs especificadas juntas. Ele também adiciona itens como ligação de dados, açúcar sintático, observadores de alterações, propriedades publicadas ... Acreditamos que essas coisas são úteis para a criação de aplicativos baseados em componentes da Web.
VERDE: O conjunto abrangente de componentes da interface do usuário (camada verde) ainda está em andamento. Esses serão componentes da web que usam todas as camadas vermelho + amarelo.
Diretivas angulares vs. elementos personalizados?
Veja a resposta de Alex Russell . Basicamente, o Shadow DOM permite compor bits de HTML, mas também é uma ferramenta para encapsular esse HTML. Este é fundamentalmente um novo conceito na Web e algo que outras estruturas alavancarão.
Quais problemas o Polymer resolve que o AngularJS não tem ou não vai?
Semelhanças: modelos declarativos, ligação de dados.
Diferenças: Angular possui APIs de alto nível para serviços, filtros, animações etc., suporta o IE8 e, neste momento, é uma estrutura muito mais robusta para a criação de aplicativos de produção. O polímero está apenas começando em alfa.
Existem planos de vincular o Polymer ao AngularJS no futuro?
São projetos separados . Dito isto, as equipes da Angular e da Ember anunciaram que eventualmente passarão a usar as APIs da plataforma subjacente em suas próprias estruturas.
^ Esta é uma grande vitória da IMO. Em um mundo em que os desenvolvedores da Web possuem ferramentas poderosas (Shadow DOM, Custom Elements), os autores de estruturas também podem utilizar essas primitivas para criar estruturas melhores. Atualmente, muitos deles passam por grandes dificuldades para "fazer o trabalho".
ATUALIZAR:
Há realmente um ótimo artigo sobre este tópico: " Aqui está a diferença entre polímero e angular "