Угловая интеграция с веб-компонентами - Дорожная карта

Мне было интересно, опубликована ли дорожная карта о том, когда и как Angular (2.0+) планирует полностью поддерживать собственные веб-компоненты (https://www.webcomponents.org/).

Да, я знаю, что есть ViewEncapsulation.Native и CUSTOM_ELEMENTS_SCHEMA. Но я спрашиваю, есть ли план полной поддержки веб-компонентов. Таким образом, мы можем использовать замечательные библиотеки, такие как полимер Google (https://www.polymer-project.org/).

Я знаю, что существует библиотека vaadin (https://github.com/vaadin/angular2-polymer), который обрабатывает интегрирование. Но еще раз: я говорю о нативной поддержке.


person Marc Borni    schedule 11.01.2017    source источник


Ответы (1)


Что ж, это прекрасная особенность веб-компонентов. Если браузер изначально поддерживает их, они будут работать в любом фреймворке. Это было бы то же самое, что использовать тег <input> в Angular. Его отображает браузер, а не фреймворк.

Все, что вам нужно сделать, это сообщить Angular, что вы используете пользовательские элементы, о которых он не знает, с CUSTOM_ELEMENTS_SCHEMA.

Теперь, когда дело доходит до библиотек веб-компонентов, таких как Polymer, это совсем другая история.

Polymer 1.x использует спецификацию настраиваемого элемента v0 и полагается на множество настраиваемой логики для управления DOM через Polymer.dom(). Он несовместим с Angular без сторонней поддержки, потому что Angular использует собственные методы манипулирования DOM вместо методов Polymer. Он никогда не будет поддерживаться Angular, потому что спецификация v0 - это не то, что реализуют браузеры.

Polymer 2.x использует спецификацию настраиваемого элемента v1, которую браузеры реализуют (или уже реализовали). Он ведет себя так же, как обычные элементы, поэтому, естественно, поддерживается Angular.

Любой дополнительный сахар, который предоставляют библиотеки, такие как Polymer, например штамповка шаблонов и привязка данных, может не работать изначально.

TL;DR;

Angular изначально поддерживает веб-компоненты в соответствии со спецификацией v1.

Библиотеки (например, Polymer), построенные на основе веб-компонентов, могут предлагать функции, которые не работают в Angular.

Если вы хотите использовать Polymer и Angular вместе, сосредоточьтесь на Polymer 2.x, который реализует спецификацию v1.

person hotforfeature    schedule 28.04.2017