[Из песочницы] Веб-компоненты в реализации Polymer от Google

286efc8989444708ab908ee1c4c4a779.jpgВеб-компоненты — это новая эра веб-разработки и почувствовать ее мощь можно уже сегодня при помощи Polymer от Google. Вы можете создавать свои собственные «элементы» (тэги), содержащие шаблон и инкапсулированные стили и логику (js), а так же воспользоваться богатой коллекцией уже готовых элементов.Что такое Polymer? Polymer это библиотека (сами они называют это, набором полифилов и синтаксического сахара) для создания и использования веб-компонент. А веб-компоненты это некий набор стандартов W3C, который в будущем будет поддерживаться уже поддерживается некоторыми браузерами. Если совсем по-простому, то веб-компонента это некий выделенный в отдельный блок кусок html кода с шаблонированием, стилями и логикой. Это позволяет повысить структурированность вашего html кода, повысить читаемость и повторное использование. Один раз написал (или выбрал из стандартных) и используй везде. Если вы думаете, что html5 изменил веб, то подождите и увидите, что сделают Веб-компоненты. © чей-то.

Проникнуться идеей веб-компонент можно на webcomponents.org. Поковыряться в чужих компонентах можно на component.kitchen.Ну и еще существует большая вероятность, что Polymer-ное виденье будущего станет реальностью, и вы в будущем просто отключите Polymer и все продолжит работать нативно. Как мы понимаем, такие компании, как Google и Mozilla (они разрабатывают похожий x-tag) могут менять будущее веба.Инфраструктура Для того, чтобы теорию подкрепить практикой, нам нужна инфраструктура. Самый простой способ создать ее — это yeoman и генератор Polymer для него (и конечно нужен Bower). Ниже необходимые команды (уже установленное у вас — пропускайте). npm install -g bower npm install -g yo npm install -g generator-polymer mkdir my-project cd my-project yo polymer В результате получаем начальный скелет приложения с парой собственных элементов, а также папку со всей коллекцией готовых элементов. Для того, чтобы посмотреть, как это выглядит в работе, нужно запустить сервер. grunt serve После запуска откроется браузер и Вы увидите такую картинку: 6b23af53e6a448ac8f5c3f1e91c73e5b.png

Итак, когда инфраструктура налажена, приступим к изучению:

Использование готовых компонент и элементов. Polymer содержит две основные коллекции элементов: Core-elements — это набор элементов, включающий визуальные элементы (панельки, кнопки, инпуты и пр) и не визуальные элементы (ajax, localstorage и т.д). Paper-elements — это набор элементов, реализующий новый material design, последнее время широко используемый Google. Для использования элементов в index.html должен быть подключен (у нас уже все подключено) platform.js: Также нужно импортировать при помощи тега нужные нам элементы до их использования: Потом просто вставляете нужные теги в ваш код и все: Для API Google есть готовые компоненты, например . Это позволяет легко встраивать сервисы Google в наше приложение. Смотрите список компонент на googlewebcomponents.github.io.По быстрому накидать готовых компонент на страницу, подправить стили и js код, посмотреть, как это все выглядит можно при помощи Design tool. С помощью нее можно потом сохранить полученный код как Github Gist.Вот небольшое видео о работе в этом «редакторе».Создание элементов Это, пожалуй, самая главная фишка веб-компонент и Polymer-а (по крайней мере для меня). Это похоже на директиву Angular, только с нормальным html со стилями и логикой. При чем все это изолированно и работает в своем скопе и ни кто из вне ничего не поломает.Выглядит это так: (я создам элемент . Начну с пустого habrauser-card.html в папке app/elements):

Давайте разберем: Сначала подключаем polymer.html или любую другую компоненту, внутри которой уже есть линк на polymer.html.Затем в тэге определяем наш элемент (Важно! Имя должно быть обязательно со знаком '–'). В свойстве attributes перечисляем внешние (которые будем использовать при вызове) свойства. Я бы назвал это интерфейсом веб-компоненты. Их еще можно задать через js и свойство publish:, но способ задания через аргумент предпочтительнее.Дальше идет шаблон на языке html (то, что заключено в теги