この質問をするのはあなたが最初ではありません:)質問に入る前に、いくつかのことを明確にしましょう。
Polymer webcomponents.js
は、Webコンポーネントの傘下にあるさまざまなW3C APIのいくつかのポリフィルを含むライブラリです。これらは:
- カスタム要素
- HTMLインポート
<template>
- シャドウDOM
- ポインターイベント
- その他
ドキュメントの左ナビゲーション(Polymer-project.org)には、これらすべての「プラットフォームテクノロジー」のページがあります。これらの各ページには、個々のポリフィルへのポインターもあります。
<link rel="import" href="x-foo.html">
HTMLインポートです。インポートは、他のHTMLにHTMLを含めるための便利なツールです。あなたは含めることができ<script>
、<link>
マークアップ、またはインポート中に他のものは何でも。
<x-foo>
x-foo.htmlへの「リンク」はありません。あなたの例では、<x-foo>
(例<element name="x-foo">
)のカスタム要素定義がx-foo.htmlで定義されていると想定しています。ブラウザがその定義を見ると、それは新しい要素として登録されます。
質問へ!
AngularとPolymerの違いは何ですか?
これについては、Q&Aビデオで説明しました。一般に、PolymerはWebコンポーネントの使用(および使用方法の説明)を目的とするライブラリです。その基盤はカスタム要素(たとえば、構築するすべてのものはWebコンポーネントです)であり、Webの進化とともに進化します。そのため、最新のブラウザの最新バージョンのみをサポートしています。
この画像を使用して、Polymerのアーキテクチャスタック全体を説明します。
REDレイヤー:一連のポリフィルによって明日のウェブを実現します。ブラウザーが新しいAPIを採用するにつれて、これらのライブラリーは時間の経過とともになくなることに留意してください。
黄色のレイヤー:Polymer.jsで砂糖をふりかけます。このレイヤーは、スペックのAPIを一緒に使用する方法に関する私たちの意見です。また、データバインディング、シンタティックシュガー、変更ウォッチャー、公開プロパティなども追加します。これらは、Webコンポーネントベースのアプリの構築に役立つと思います。
緑:UIコンポーネントの包括的なセット(緑のレイヤー)はまだ進行中です。これらは、赤と黄色のレイヤーをすべて使用するWebコンポーネントになります。
Angularディレクティブ対カスタム要素?
Alex Russellの回答を参照してください。基本的に、Shadow DOMはHTMLのビットを構成することを可能にしますが、そのHTMLをカプセル化するためのツールでもあります。これは基本的にWeb上の新しい概念であり、他のフレームワークが活用するものです。
Polymerは、AngularJSが持っていない、またはしないという問題を解決しますか?
類似点:宣言型テンプレート、データバインディング。
違い:Angularには、サービス、フィルター、アニメーションなどのための高レベルのAPIがあり、IE8をサポートしており、現時点では、プロダクションアプリを構築するためのはるかに堅牢なフレームワークです。Polymerはアルファ版で始まったばかりです。
将来的に、PolymerをAngularJSと関連付ける計画はありますか?
それらは別々のプロジェクトです。とはいえ、AngularチームとEmberチームの両方が、最終的には独自のフレームワークで基盤となるプラットフォームAPIの使用に移行すると発表しました。
^これは大きな勝利のIMOです。Web開発者が強力なツール(シャドウDOM、カスタム要素)を持っている世界では、フレームワークの作成者はこれらのプリミティブを利用して、より優れたフレームワークを作成することもできます。彼らのほとんどは、現在、「仕事を成し遂げる」ために大いに努力しています。
更新:
このトピックに関する本当に素晴らしい記事があります:「PolymerとAngularの違いはここにあります」