No eres el primero en hacer esta pregunta :) Permíteme aclarar un par de cosas antes de responder a tus preguntas.
Polymer's webcomponents.js
es una biblioteca que contiene varios polyfills para varias API de W3C que se encuentran bajo el paraguas de Web Components. Estos son:
- Elementos personalizados
- Importaciones HTML
<template>
- Shadow DOM
- Eventos de puntero
- otros
El navegador de la izquierda en la documentación ( polímero-proyecto.org ) tiene una página para todas estas "Tecnologías de plataforma". Cada una de esas páginas también tiene un puntero al polyfill individual.
<link rel="import" href="x-foo.html">
es una importación HTML. Las importaciones son una herramienta útil para incluir HTML en otro HTML. Puede incluir <script>
, <link>
marcado o cualquier otra cosa en una importación.
Nada "enlaza" <x-foo>
a x-foo.html. En su ejemplo, se supone que la definición de elemento personalizado de <x-foo>
(p <element name="x-foo">
. Ej. ) Se define en x-foo.html. Cuando el navegador ve esa definición, se registra como un nuevo elemento.
¡A las preguntas!
¿Cuál es la diferencia entre Angular y Polymer?
Cubrimos algo de esto en nuestro video de preguntas y respuestas . En general, Polymer es una biblioteca que tiene como objetivo usar (y mostrar cómo usar) componentes web. Su base es Elementos personalizados (por ejemplo, todo lo que construye es un componente web) y evoluciona a medida que evoluciona la web. Con ese fin, solo admitimos la última versión de los navegadores modernos.
Usaré esta imagen para describir la pila de arquitectura completa de Polymer:
Capa ROJA: Obtenemos la web del mañana a través de un conjunto de polyfills. Tenga en cuenta que esas bibliotecas desaparecen con el tiempo a medida que los navegadores adoptan las nuevas API.
Capa AMARILLA: espolvoree un poco de azúcar con polímero.js. Esta capa es nuestra opinión sobre cómo usar las API especificadas, juntas. También agrega cosas como enlace de datos, azúcar sintáctica, observadores de cambios, propiedades publicadas ... Creemos que estas cosas son útiles para crear aplicaciones basadas en componentes web.
VERDE: El conjunto completo de componentes de la interfaz de usuario (capa verde) todavía está en progreso. Estos serán componentes web que usan todas las capas rojas + amarillas.
¿Directivas angulares frente a elementos personalizados?
Ver la respuesta de Alex Russell . Básicamente, Shadow DOM permite componer bits de HTML, pero también es una herramienta para encapsular ese HTML. Este es fundamentalmente un nuevo concepto en la web y algo que otros marcos aprovecharán.
¿Qué problemas resuelve Polymer que AngularJS no tiene o no quiere?
Similitudes: plantillas declarativas, enlace de datos.
Diferencias: Angular tiene API de alto nivel para servicios, filtros, animaciones, etc., es compatible con IE8 y, en este punto, es un marco mucho más robusto para crear aplicaciones de producción. El polímero recién comienza en alfa.
¿Hay planes para vincular Polymer con AngularJS en el futuro?
Son proyectos separados . Dicho esto, los equipos de Angular y Ember anunciaron que eventualmente cambiarán a usar las API de la plataforma subyacente en sus propios marcos.
^ Esta es una gran victoria de la OMI. En un mundo donde los desarrolladores web tienen herramientas poderosas (Shadow DOM, Elementos personalizados), los autores de marcos también pueden utilizar estas primitivas para crear mejores marcos. La mayoría de ellos actualmente pasan por grandes aros para "hacer el trabajo".
ACTUALIZAR:
Hay un gran artículo sobre este tema: " Aquí está la diferencia entre Polymer y Angular "