polymer - new era of web development

39
POLYMER New Era of Web Development

Upload: alexander-kirillov

Post on 13-Apr-2017

1.127 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Polymer - New Era of Web Development

POLYMERNew Era

of Web Development

Page 2: Polymer - New Era of Web Development

ЧТО ТАКОЕ POLYMER?

Elements

Core(polymer.js)

Foundation(platform.js)

Библиотека, которая используетновейшие веб-технологии

для создания пользовательских HTML элементов

Page 3: Polymer - New Era of Web Development

ЧТО ТАКОЕ POLYMER?

Elements

Core (polymer.js)

Foundation (platform.js)

Page 4: Polymer - New Era of Web Development

ВСЕ ЕСТЬ ЭЛЕМЕНТ

Page 5: Polymer - New Era of Web Development

ВСЕ ЕСТЬ ЭЛЕМЕНТLayout

Data

View

Services/libs

<polymer-layout><polymer-flex-layout><polymer-grid-layout>

<polymer-media-query><polymer-page>

<polymer-localstorage><polymer-xhr><polymer-jsonp><polymer-file><polymer-meta>

<your-custom-lib><google-doc><google-map><google-youtube><google-sheets>

Page 6: Polymer - New Era of Web Development

ЗАГЛЯНЕМ ГЛУБЖЕ

Page 7: Polymer - New Era of Web Development

ЗАГЛЯНЕМ ГЛУБЖЕ

Декларирование элемента

Page 8: Polymer - New Era of Web Development

ЗАГЛЯНЕМ ГЛУБЖЕ

Шаблон элемента

Page 9: Polymer - New Era of Web Development

ЗАГЛЯНЕМ ГЛУБЖЕ

Shadow DOM

Page 10: Polymer - New Era of Web Development

ЗАГЛЯНЕМ ГЛУБЖЕ

Code and logic…

Page 11: Polymer - New Era of Web Development

ПОДРОБНЕЕ О ВЕБ-КОМПОНЕНТАХ (ШАБЛОНЫ)

http://www.html5rocks.com/en/tutorials/webcomponents/template/

• Поведение как у привычных шаблонов• Контент шаблона инертен (не происходит подгрузки внешних элементов) пока шаблон не активирован

• Не возникает краевых эффектов с внешними элементами• Как-бы «не в документе» - селекторы его не возвращают содержимое шаблона

Page 12: Polymer - New Era of Web Development

Shadow DOM

Всем выйти из сумрака!

http://illustrators.ru/illustrations/195271

Page 13: Polymer - New Era of Web Development

SHADOW DOM

… childchild

shadow host

Document TreeShadow Trees

Shad

ow

shadow root

chil chil…

… …

множество DOM деревьев в пределах родительского

Page 14: Polymer - New Era of Web Development

SHADOW DOM

• Light DOM

Page 15: Polymer - New Era of Web Development

SHADOW DOM

• Light DOM

• Shadow DOM

Light DOM + Shadow DOM = Logical DOM (с этим работает разработчик)

Page 16: Polymer - New Era of Web Development

SHADOW DOM

• Light DOM

• Shadow DOM

• Composed (rendered) DOM

Браузер использует Composed DOM для вывода на странице

Page 17: Polymer - New Era of Web Development

SHADOW DOMPolymer позволяет перейти

на светлую сторону от императивной работы с Shadow DOM к декларативной

Page 18: Polymer - New Era of Web Development

HTML IMPORTS

• Нативные способы доставки ресурсов(<script src>, <link rel="stylesheet">, <img>, <video>, <audio>)

• А если нужно доставить HTML?

• <iframe>

• AJAX (xhr.responseType = ‘document')

• CrazyHacks™ (<script type="text/html">)

http://www.html5rocks.com/en/tutorials/webcomponents/imports/

Page 19: Polymer - New Era of Web Development

HTML IMPORTS• Веб-компоненты позволяют делать это проще

• … даже с другого домена

http://www.html5rocks.com/en/tutorials/webcomponents/imports/

Page 20: Polymer - New Era of Web Development

HTML IMPORTS• Мы хотим больше! (HTML/CSS/JS)

http://www.html5rocks.com/en/tutorials/webcomponents/imports/

Page 21: Polymer - New Era of Web Development

HTML IMPORTS• А что с производительностью?

• Vulcanize (https://github.com/Polymer/vulcanize)

• активно используется кэширование браузера

• асинхронная загрузка компонентов

• импорты не блокируют парсинг

• импорты не заставляют компонент «исполняться» сразу

http://www.html5rocks.com/en/tutorials/webcomponents/imports/

Page 22: Polymer - New Era of Web Development

DATA BINDING• Двусторонняя (two-way) связка данных

Page 23: Polymer - New Era of Web Development

DATA BINDING (ТИПЫ СВЯЗЫВАНИЯ)

• Экземпляры одного шаблона

Page 24: Polymer - New Era of Web Development

DATA BINDING (ТИПЫ СВЯЗЫВАНИЯ)

• Итеративные шаблоны

Page 25: Polymer - New Era of Web Development

DATA BINDING (ТИПЫ СВЯЗЫВАНИЯ)

• Шаблоны с условием

Page 26: Polymer - New Era of Web Development

DATA BINDING (ТИПЫ СВЯЗЫВАНИЯ)

• Использование шаблонов по ссылке

Page 27: Polymer - New Era of Web Development

DATA BINDING (ТИПЫ СВЯЗЫВАНИЯ)

• Использование шаблонов по ссылке … или так

Page 28: Polymer - New Era of Web Development

DATA BINDING (ТИПЫ СВЯЗЫВАНИЯ)

• Binding to text

• Binding to attributes

• Binding to input values<input>, <select>, <option>, <textarea>

Page 29: Polymer - New Era of Web Development

DATA BINDING {{ВЫРАЖЕНИЯ}}

• Устраняет использование сложной логики в представлениях (view)

• Выражения не являются скриптом

• Не вставляют HTML (позволяют избежать XSS)

• Поддерживают вложенность

Page 30: Polymer - New Era of Web Development

DATA BINDING ДЕКЛАРАТИВНЫЕ ОБРАБОТЧИКИ СОБЫТИЙ

Page 31: Polymer - New Era of Web Development

DATA BINDING АВТОМАТИЧЕСКИЙ ПОИСК ЭЛЕМЕНТА

Page 32: Polymer - New Era of Web Development

СТИЛИЗАЦИЯ ЭЛЕМЕНТОВ

Page 33: Polymer - New Era of Web Development

СТИЛИЗАЦИЯ ЭЛЕМЕНТОВ• Polymer умеет вставлять файлы стилей в элементы

(нативный Shadow DOM это НЕ умеет)

Page 34: Polymer - New Era of Web Development

СТИЛИЗАЦИЯ ЭЛЕМЕНТОВ• Polymer умеет вставлять файлы стилей в элементы

(нативный Shadow DOM это НЕ умеет)

Разворачивается в

Page 35: Polymer - New Era of Web Development

НАТИВНАЯ ПОДДЕРЖКА

Page 36: Polymer - New Era of Web Development

POLYMER

Elements

Core (polymer.js)

Foundation (platform.js)

когда все браузеры реализуют спецификацию

этот слой станет не нужен

Page 37: Polymer - New Era of Web Development

ЧТО ЕСТЬ УЖЕ СЕЙЧАС?

• Core Elements

• Paper Elements (+Material Design)

• Community Elements (Github, etc…)

Page 38: Polymer - New Era of Web Development

POLYMER DESIGNER

Создание прототипов простым перетаскиванием

https://www.polymer-project.org/tools/designer/

Page 39: Polymer - New Era of Web Development

СПАСИБО ЗА ВНИМАНИЕ• https://www.polymer-project.org/• https://plus.google.com/+PolymerProject• http://customelements.io/• http://habrahabr.ru/post/180377/

Кириллов АлександрTwitter : @saratovsourceLinkedIn: ru.linkedin.com/in/kirillovalexander/