Non sei il primo a porre questa domanda :) Vorrei chiarire un paio di cose prima di arrivare alle tue domande.
Polymer's webcomponents.js
è una libreria che contiene diversi polyfill per varie API W3C che rientrano nell'ambito del Web Components. Questi sono:
- Elementi personalizzati
- Importazioni HTML
<template>
- Shadow DOM
- Eventi puntatore
- altri
Il nav di sinistra nella documentazione ( polymer-project.org ) ha una pagina per tutte queste "Tecnologie della piattaforma". Ognuna di quelle pagine ha anche un puntatore al singolo polyfill.
<link rel="import" href="x-foo.html">
è un'importazione HTML. Le importazioni sono uno strumento utile per includere HTML in altri HTML. Puoi includere <script>
, <link>
markup o qualsiasi altra cosa in un'importazione.
Niente "collega" <x-foo>
a x-foo.html. Nel tuo esempio, si presume che la definizione di elemento personalizzato di <x-foo>
(ad esempio <element name="x-foo">
) sia definita in x-foo.html. Quando il browser vede tale definizione, viene registrato come nuovo elemento.
Alle domande!
Qual'è la differenza tra Angular e Polymer?
Ne abbiamo parlato in parte nel nostro video di domande e risposte . In generale, Polymer è una libreria che mira a utilizzare (e mostrare come utilizzare) i componenti Web. Il suo fondamento è Custom Elements (ad es. Tutto ciò che costruisci è un componente web) e si evolve man mano che il web si evolve. A tal fine, supportiamo solo l'ultima versione dei browser moderni.
Userò questa immagine per descrivere l'intero stack di architettura di Polymer:
Livello ROSSO: otteniamo la rete di domani attraverso una serie di polifilloli. Tieni presente che quelle librerie scompaiono nel tempo man mano che i browser adottano le nuove API.
Strato GIALLO: cospargere di zucchero con polymer.js. Questo livello è la nostra opinione su come utilizzare le API specifiche, insieme. Aggiunge anche cose come associazione di dati, zucchero sintetico, osservatori di cambiamenti, proprietà pubblicate ... Pensiamo che queste cose siano utili per la creazione di app basate su componenti Web.
VERDE: il set completo di componenti dell'interfaccia utente (livello verde) è ancora in corso. Saranno componenti web che utilizzano tutti i livelli rosso + giallo.
Direttive angolari vs. elementi personalizzati?
Vedi la risposta di Alex Russell . Fondamentalmente, Shadow DOM consente di comporre bit di HTML ma è anche uno strumento per incapsulare tale HTML. Questo è fondamentalmente un nuovo concetto sul web e qualcosa che altri framework trarranno vantaggio.
Quali problemi risolve Polymer che AngularJS non ha o non vuole?
Somiglianze: modelli dichiarativi, associazione dati.
Differenze: Angular ha API di alto livello per servizi, filtri, animazioni, ecc., Supporta IE8 e, a questo punto, è un framework molto più robusto per la creazione di app di produzione. Polymer è appena agli inizi in alpha.
Ci sono piani per legare Polymer con AngularJS in futuro?
Sono progetti separati . Detto questo, entrambi i team di Angular ed Ember hanno annunciato che alla fine passeranno all'utilizzo delle API della piattaforma sottostante nei propri framework.
^ Questa è una grande vittoria dell'IMO. In un mondo in cui gli sviluppatori web dispongono di potenti strumenti (Shadow DOM, Custom Elements), anche gli autori di framework possono utilizzare queste primitive per creare framework migliori. La maggior parte di loro attualmente passa attraverso grandi cerchi per "portare a termine il lavoro".
AGGIORNARE:
C'è un articolo davvero eccezionale su questo argomento: " Ecco la differenza tra polimero e angolare "