Но прежде чем мы углубимся в это, позвольте мне пояснить, что на самом деле представляет собой проект Polymer.
Полимерная «библиотека»
Polymer – это библиотека веб-компонентов от Google. По данным сайта полимерных проектов:
Проект Polymer поможет вам обеспечить удивительный пользовательский интерфейс, раскрывая весь потенциал веб-платформы.
Далее указывается, что:
Polymer добавляет немного сахара по сравнению со стандартными API веб-компонентов, упрощая получение отличных результатов.
Подводя итог, можно сказать, что Polymer — это надстраивающий слой поверх веб-компонентов, который пытается упростить работу с веб-компонентами.
Что такое веб-компоненты?
У MDN есть очень хорошее краткое изложение идеи веб-компонентов:
[…] многоразовые виджеты пользовательского интерфейса, созданные с использованием открытой веб-технологии. Они являются частью браузера, поэтому им не нужны внешние библиотеки, такие как jQuery или Dojo (см. также Википедия, Страница разработчика Google).
Веб-компоненты TL;DR = (UI) компоненты, которые можно повторно использовать без написания дополнительного кода и/или использования внешних библиотек.
Зачем тебе это? Потому что в настоящее время, если вы найдете очень хороший компонент, это может быть реакция, но вы используете Angular, поэтому вы не можете его использовать. Решение, предоставляемое веб-компонентами, состоит в том, чтобы отделить небольшие компоненты от фреймворков и библиотек, которые будут использоваться всеми с любым фреймворком.
Проблема
Полимер сам по себе парадокс. Пытаясь привлечь больше людей к использованию веб-компонентов, они на самом деле предают саму идею веб-компонентов: интероперабельность.
На данный момент вам трудно найти веб-компонент, который не привязан к полимеру. Это означает, что даже если вы используете только один компонент рейтинга, вам нужно будет включить библиотеку полимеров.
Гораздо хуже то, что при выходе новой версии полимера нужно будет обновлять все компоненты. Что делать, если у вас есть хорошо работающий компонент, который не обновляется? Включаете ли вы старый и новый полимер?
Google может сказать, что Polymer — это не фреймворк, а библиотека. Однако вы туго в точно так же.
Гугл зло?
Я так не думаю. Я не верю, что Google хочет быть единственной компанией, контролирующей веб-компоненты. Я скорее думаю, что они хотели показать, что возможно с веб-компонентами, и немного переборщили.
Какое решение?
Идеальное решение состоит из трех шагов, которые, добавляя немного работы, будут выгодны для всех.
Во-первых, нам нужно начать писать гораздо больше ванильных веб-компонентов. Google также должен это сделать. Я хочу, чтобы элементы формы, ползунки, кнопки и многое другое работали без каких-либо зависимостей, как в представлении Mozilla выше.
Это улучшит текущие компоненты. Например, когда вы не можете полагаться на наличие полимера, вы заставите элементы ввода работать в любой веб-форме, а не только в специальной полимерной форме.
Придется ли нам переписывать один и тот же код для каждого компонента?
Нет, вместо создания одной большой библиотеки мы могли бы создать множество крошечных пакетов, которые вы встраиваете в свой компонент. Это можно сделать с помощью модулей es6 с помощью babel + gulp. Таким образом, Google мог бы написать модуль для синхронизации атрибутов с переменными класса, и каждый мог бы его использовать.
Могут ли такие библиотеки, как Polymer, быть полезными?
Я думаю, что Polymer следует называть тем, чем он является, фреймворком. Это фреймворк, который использует веб-компоненты вместо создания собственной системы компонентов.
Это довольно удобно, так как максимально использует нативную функциональность. Это имеет смысл, когда вы создаете свое приложение. Логические компоненты, такие как маршрутизаторы, которые должны быть более тесно интегрированы, могут быть только полимерными. Однако давайте начнем делать наши входы, кнопки и переключатели свободными от зависимостей, чтобы каждый мог их использовать.
Первоначально опубликовано на https://vea.re 1 ноября 2016 г.