Polymer, год вместе

@arturparkhisenko

Polymer

Год вместе

Livestream-icon arturparkhisenko
2016-11-26, Kyiv
Polymer-cover

Наша миссия

Мы обеспечиваем онлайн-трансляции


Мы сближаем тебя с окружающими, превращая каждое событие в бесценный опыт

livestream-cover

Проект Livestream Studio Webсontrol

Часть Livestream Studio, позволяющая управлять приложением с помощью веб-браузера из любой точки мира


Web Control WebRTC Cloud Используя WebRTC
livestream-cover

Проект Livestream Studio Webсontrol

Web Control livestream-cover
bootstrap-components

Как увидеть внутренности веб компонентов?

settings-chrome-shadowdom

Под "капотом" у тега <video>

video-example

Веб-компоненты

Это возможность создавать пользовательские, инкапсулируемые, переиспользуемые компоненты, использующие веб-платформу.

Lego Blocks

Кросс браузерные Веб-Компоненты
уже здесь👍

Custom Elements v1 in Safari Technology Preview 17

Поддержка браузерами

Browser support

webcomponents.js для: IE 11+, Safari 9+

Source: webcomponents.org

Новое и особенности веб-компонентов:

Polymer-cover

Проект и библиотека Polymer

Используйте веб-платформу, чтобы сделать веб лучше


Проект Polymer - это набор библиотек и утилит для
веб-разработчиков.

Библиотека Polymer создана для того, чтобы упростить работу с нативными API веб-платформы.

Polymer-cover

Polymer утилиты

Polymer App Toolbox - это коллекция готовых веб-компонентов, утилит и шаблонов для создания
Прогрессивных Веб Приложений с библиотекой Polymer
(роутинг, локализация, хранилище, лэйауты, polygit-cdn).

Отдельные утилиты: polymer-analyzer/build/linter/project-config/bundler, polyserve, Web Component Tester.

Polymer-cover

Polymer утилиты

Polymer-cli - консольная утилита, которая включает в себя инструменты сборки, генерации, линтер, сервер для разработки и платформу для тестирования.

Polymer-cover

Кто использует Polymer?

logo-deck

Polymer подход

Polymer-cover
Source: youtu.be/8ZTFEhPBJEE use the platform

Сравнение с конкурентами

Polymer Polymer v1 (53kb min+gzip) больше всех по размеру, v2 (10kb)

SkateJS SkateJS
Incremental DOM (from Google), JS импорт вместо HTML импорта, живой проект (5kb), (есть SSR)

X-tag X-tag и Bosonic Bosonic - Являются заброшенными :/

react riot angular vuejs и т.д. не используют Web Components APIs,
но можно использовать компоненты в них и их внутри компонентов.

Слабые стороны Polymer v1.Х (ES5)

Polymer-cover

Слабые стороны Polymer v1.Х (ES5)

еще... Polymer-cover

Год спустя

Polymer-cover

Год спустя

Polymer-cover

Жизненный цикл компонентов

Polymer-cover

Пример: простой Polymer v1 компонент

      <dom-module id="element-name">
        <template>
          <style>/* CSS rules for your element */</style>
          <!-- local DOM for your element -->
        </template>
        <script> Polymer({ is: "element-name" }); </script>
      </dom-module>
  	
Много примеров для Polymer 1.X Polymer-cover

Пример: простой Polymer v2 компонент

      <dom-module id="element-name">
        <template><style></style>/* same as v1 */</template>
        <script>
          class MyPolymerElement extends Polymer.Element {// ...}
          customElements.define('element-name', MyPolymerElement);
        </script>
      </dom-module>
  	
Polymer-cover

Пример: компонент <wsd-logo>


      <wsd-logo color="dark" width="128px"></wsd-logo>
      <wsd-logo color="light" width="128px"></wsd-logo>
      <wsd-logo color="mono" width="128px"></wsd-logo>
  	
Polymer-cover

Пример: связывание атрибутов и свойств

      <template>
        <!-- Атрибуты -->
        <my-element selected $= "[[value]]"></my-element>
        <!-- Свойства -->
        <my-element selected = "{{value}}"></my-element>
      </template>
  	
Polymer-cover

Пример: CSS Scoping, важные селекторы

      <style>
       :host {} /* Текущий элемент */
       :host() {} /* Текущий элемент, соответствие селектору */
       :host-context() {} /* Родитель, соответствие селектору */
       ::slotted() {} /* Вставленный контент, старый ::content */
       >>> {} /* Игнорирует границы Shadow Dom,
         старые /deep/ и ::shadow */
      </style>
  	
Polymer-cover

Пример: дополнительная изоляция с помощью CSS Containment

CSS свойство, позволяющее разработчикам ограничить область применения стилей, компоновок и отрисовок для браузера.
Влияет на производительность, используйте аккуратно.

      contain: strict; /* === layout style paint size */
      contain: content; /* === layout style paint */
    
habr пост о CSS Containment Polymer-cover

Эволюция Polymer

Polymer v2.0 нативный веб

Polymer-cover

Принцип FIRST при разработке компонентов

При создании компонентов не забывайте про эти 5 пунктов:

addyosmani.com/first Polymer-cover

WebComponent bundle analyzer

WebComponent bundle analyzer

Каталоги компонентов

Polymer-cover

Ссылки

Polymer-cover

Вопросы?

photo Artur Parkhisenko

Artur Parkhisenko
site arturparkhisenko.github.io
twitter @lifeasecond

Ссылка на презентацию: arturparkhisenko.github.io/wsd-polymer-2016/

Fork me on GitHub