Полимеры и веб-компоненты в последнее время являются очень горячими темами, и поскольку эта экосистема быстро развивается, разработчикам часто бывает трудно быть в курсе всех последних изменений.
В своем выступлении на Chrome Dev Summit Мэтт МакНалти, технический менеджер команды Polymer, объяснил, что такое Polymer, а также изложил дорожную карту для Polymer 1.0.
Что такое полимер?
Во-первых, что такое полимер?
Polymer — это библиотека, которая помогает создавать элементы и приложения из веб-компонентов. Веб-компоненты — это передовой набор новых стандартов, которые позволяют разработчикам расширять словарь HTML своими собственными элементами.
![Polymer помогает разработчикам быстрее создавать приложения](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/polymer-helps-developers-a805f911c7281.jpg?hl=ru)
Поскольку веб-компоненты задуманы как новый примитив для браузера, это означает, что они очень мощные, но при этом очень низкоуровневые, и для работы с ними требуется немало кода.
![Polymer делает веб-компоненты слаще](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/polymer-makes-web-compone-92d01088f1203.jpg?hl=ru)
Polymer упрощает работу с веб-компонентами, «подслащивая» синтаксис. Это уменьшает количество шаблонного кода, который вам нужно написать, и добавляет декларативный стиль, поэтому создавать веб-компоненты так же просто, как писать HTML.
Полимерный эксперимент
Polymer начинался как эксперимент, чтобы посмотреть, сможем ли мы заполнить стандарты веб-компонентов и получить отзывы от разработчиков до того, как эти технологии будут внедрены во все браузеры. По мере того, как все больше разработчиков начали использовать Polymer, он превратился из просто полифилов в настоящую библиотеку, полную функций повышения производительности (привязка данных, средства наблюдения за изменением атрибутов, автоматический поиск узлов и т. д.). Но у всех экспериментов есть результаты, так как же мы это сделали?
![Табель успеваемости по полимерам нуждается в улучшении](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/polymer-report-card-needs-b82f24b84598c.jpg?hl=ru)
Хотя многие разработчики заявили, что им понравилась выразительность и повышение производительности работы с веб-компонентами в Polymer, они также выразили обеспокоенность по поводу производительности и общей сложности.
Это подчеркивает естественное напряжение, которое существовало в Polymer все время: быть экспериментом, чтобы продвинуть веб-платформу вперед, но также создать что-то достойное производства, на что разработчики могут положиться.
Предстоящие изменения
Команда Polymer тщательно изучила каждую функцию библиотеки с целью создать более компактную, готовую к использованию версию, которую разработчики смогут использовать с уверенностью.
Слои
Полимер был преобразован в ряд слоев. Основные функции быстрые и экономичные, а более продвинутые функции будут доступны по желанию. В большинстве случаев использования основные функции должны удовлетворять потребности разработчиков.
![Полимер был реорганизован в слои.](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/polymer-has-been-refactor-956c5aab599cd.jpg?hl=ru)
Упрощенная привязка данных
Система привязки данных Polymer также была значительно оптимизирована по производительности. В соответствии с многоуровневым подходом теперь включена двусторонняя привязка, а по умолчанию используются односторонние привязки. Кроме того, опубликованные типы свойств стали явными, а изменение свойства теперь вызывает событие, облегчающее взаимодействие элементов из разных библиотек.
![Привязка данных была упрощена](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/data-binding-has-been-sim-1222611d800a9.jpg?hl=ru)
Более компактный теневой DOM
Полифил Shadow DOM — это потрясающий инженерный подвиг. Он был разработан как комплексный и соответствующий спецификациям, что важно для тщательного тестирования примитива платформы, но, к сожалению, создает ряд узких мест в производительности для функций, которые Polymer не использует.
В следующей версии Polymer будет использован другой подход: будет использоваться слой в стиле прокладки, который заполняет только то, что нужно Polymer.
![Shim Shadowdom намного быстрее](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/shim-shadowdom-is-much-fa-68a4b5bcbced.jpg?hl=ru)
Существующий полифилл будет использоваться для общих, неполимерных веб-компонентов.
Переходим на сайт webcomComponents.org.
Говоря о полифилах, они тоже обретают новый дом. В настоящее время многие разработчики не понимают взаимосвязи между Polymer и веб-компонентами. Некоторые думают, что для использования веб-компонентов необходимо использовать весь Polymer, хотя на самом деле вам нужны только полифилы.
Чтобы сделать это различие более ясным, полифилы были перенесены на сайт webcomComponents.org и теперь переименованы в webcomponents.js
.
![Полифилы переезжают на webcomComponents.org](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/polyfills-moving-webcomp-504704db1d618.jpg?hl=ru)
Этот шаг призван помочь другим авторам библиотек без каких-либо затруднений воспользоваться преимуществами полифилов. Команда Polymer продолжит вносить свой вклад в создание полифилов, но есть надежда, что это изменение превратит их в более общий ресурс для сообщества.
Полученные результаты
Так каковы же результаты всех этих изменений?
Скорость
В Chrome Polymer теперь работает в 5 раз быстрее , а в Safari — в 8 раз .
![Polymer теперь в 8 раз быстрее в Safari.](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/polymer-is-8x-faster-sa-32dc57f4dcf15.jpg?hl=ru)
Размер файла
Размер файла также был уменьшен на 87%, со 123 КБ до 15 КБ (6 КБ в сжатом виде).
![Полимер теперь на 87% меньше](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/polymer-is-87-smaller-0013b2cbc9c2b.jpg?hl=ru)
Дорожная карта
В следующем выпуске будут некоторые критические изменения API, обозначенные новым номером версии (0.8), но команда хочет дать понять, что это не переписывание. Перенос вашего текущего проекта с Polymer 0.5 на 0.8 должен быть довольно тривиальным.
Команда Polymer также наметила дорожную карту, чтобы дать разработчикам больше ясности в отношении предстоящих выпусков.
![Дорожная карта полимеров: бета-версия в первом квартале, 1.0 во втором квартале](https://developer.chrome.google.cn/static/blog/polymer-state-of-the-union/image/polymer-roadmap-beta-q1-ee4a2fd8a7964.jpg?hl=ru)
Предварительная версия 0.8 теперь доступна как ветка на GitHub (хотя она все еще очень активно разрабатывается и не имеет документации). Официальная бета-версия 0.9 запланирована на первый квартал 2015 года, а версия 1.0 выйдет где-то во втором квартале.
Эксперимент окончен
Несмотря на все недавние изменения в Polymer, команда, стоящая за ним, закладывает основу для того, чтобы веб-компоненты стали неотъемлемой частью стека каждого разработчика. Если вы новичок в веб-компонентах, сейчас самое время взглянуть и ознакомиться с этими преобразующими технологиями. Если вы уже работаете с компонентами (и полимерами), будущее действительно выглядит светлым. Следите за всеми последними обновлениями в блоге Polymer и подпишитесь на список рассылки Polymer, чтобы получать вопросы и комментарии. Удачного взлома!