6. Спецификации
— HTML Import - внешний html документ
— <template> - инертный DOM фрагмент (заготовка)
— Custom elements - собственный элемент (тег)
— Shadow DOM - скрытое дерево элемента
6
10. Custom elements
— Собственная логика
— Доступны события жизненного цикла
— Создание элемента
— Вставка в документ
— Удаление из документа
— Изменение атрибутов элемента
— Имя элемента должно содержать дефис
10
11. Custom elements
var proto = Object.create(HTMLElement.prototype);
proto.createdCallback = function() {
this.innerHTML = 'Уже зарегистрированы?';
};
document.registerElement('join-blk', {prototype: proto});
<join-blk></join-blk>
01.
02.
03.
04.
05.
01.
11
17. Приемущества
— Сложное разделяется на простые части
— Улучшается семантика
— Легко поддерживать / дорабатывать
— Легко тестировать
— Легко переиспользовать
— component.kitchen и customelements.io
17
18. Текущая поддержка
Браузеры * IE Chrome Firefox Safari Android IOS
* последние версии
HTML Imports - + f - + -
<template> - + + + + +
Custom elements - + f - + -
Shadow DOM - + f - + -
18
19. webcomponent.js
Браузеры * IE Chrome Firefox Safari Android IOS
* последние версии
HTML Imports + + + + + +
<template> + + + + + +
Custom elements + + + + + +
Shadow DOM + + + + + +
19
20. Ложка дегтя -Shadow DOM
— Медленный
— Сложные проекции
— Проблемы с событиями
— Часто переписывается *
* черновик на github
20
34. А так же:
— Собственный API для работы с DOM
— Обновление внешних атрибутов
— Вычисляемые свойства
— Вспомогательные элементы *
— Собственные css свойства *
* эксперементальные
34
35. Что еще?
— Библиотека базовых компонент
— Библиотека компонент в стиле Material Design
— Визуальный редактор
35
38. Заключение
— Уже используют Github, Salesforce, NewsCorp ...
— Скоро будут Youtube, QuickOffice, GoogleMusic ...
— Много примеров: PolymerMail, Topeka, SantaTracker ...
— Веб-компоненты - это уже настоящее!
38