SlideShare a Scribd company logo
1 of 99
Download to read offline
WE M EN & LI -EL T INWE M EN & LI -EL T IN
P O C OP O C O
1
Х О ЯХ О Я
Infopulse team/tech lead
BeerJS Zhytomyr
OdessaJS / Frontend://zt
Суддя DEV Challenge
Спікер
2
Г У Н 2016Г У Н 2016
3
Г У Н 2016Г У Н 2016
Попередній стек: Coffeescript, Pug, Stylus
3
Г У Н 2016Г У Н 2016
Визначаємо майбутній стек
Попередній стек: Coffeescript, Pug, Stylus
3
Г У Н 2016Г У Н 2016
Аналізуємо ринок
Попередній стек: Coffeescript, Pug, Stylus
Визначаємо майбутній стек
3
Г У Н 2016Г У Н 2016
Отримуємо деталі ТЗ
Попередній стек: Coffeescript, Pug, Stylus
Визначаємо майбутній стек
Аналізуємо ринок
3
РЕ Т : ПО Н А ЗА ІРЕ Т : ПО Н А ЗА І
Мінімальний об’єм збірки
Підтримка ІЕ11
Перевикористання коду
Автономність
Можливість наповнення менеджерами
4
C 2016C 2016
Січень 2017
5
С Е П О ТС Е П О Т
Січень - лютий
6
С Е П О ТС Е П О Т
Січень - лютий
6
С Е П О ТС Е П О Т
Січень - лютий
6
С Е П О ТС Е П О Т
Січень - лютий
6
С Е П О ТС Е П О Т
Січень - лютий
6
С Е П О ТС Е П О Т
Січень - лютий
6
Травень 2017
ВИ ІШИ ВИ ТИ "НА НІ" ВЕВИ ІШИ ВИ ТИ "НА НІ" ВЕ
КО Н И ДО ТО , ЯК ЦЕ С АКО Н И ДО ТО , ЯК ЦЕ С А
МЕЙН РІМОМЕЙН РІМО
7
КО Н И / Ф ЕЙМ О ККО Н И / Ф ЕЙМ О К
8
КО Н И / Ф ЕЙМ О ККО Н И / Ф ЕЙМ О К
8
КО Н И / Ф ЕЙМ О ККО Н И / Ф ЕЙМ О К
8
КО Н И / Ф ЕЙМ О ККО Н И / Ф ЕЙМ О К
8
PO M -> LI -EL T, LI -H LPO M -> LI -EL T, LI -H L
Травень 2017, Google IO
9
LI -H L. TE L TI NELI -H L. TE L TI NE
10
LI -H L. TE L TI NELI -H L. TE L TI NE
var div = document.createElement('div');
div.setAttribute('class', 'conference-is-hot');
10
LI -H L. TE L TI NELI -H L. TE L TI NE
var div = document.createElement('div');
div.setAttribute('class', 'conference-is-hot');
document.body.innerHTML = '<div class="conference-is-hot">Hello</div>';
10
LI -H L. TE L TI NELI -H L. TE L TI NE
var div = document.createElement('div');
div.setAttribute('class', 'conference-is-hot');
document.body.innerHTML = '<div class="conference-is-hot">Hello</div>';
<div ng-class="{conference-is-hot: hasHot}">{{sayHello}}</div>
10
LI -H L. TE L TI NELI -H L. TE L TI NE
var div = document.createElement('div');
div.setAttribute('class', 'conference-is-hot');
document.body.innerHTML = '<div class="conference-is-hot">Hello</div>';
<div ng-class="{conference-is-hot: hasHot}">{{sayHello}}</div>
<div classname="{hasHot ? 'conference-is-hot' : ''}">{this.sayHello}</div
10
LI -H L. TE L TI NELI -H L. TE L TI NE
var div = document.createElement('div');
div.setAttribute('class', 'conference-is-hot');
document.body.innerHTML = '<div class="conference-is-hot">Hello</div>';
<div ng-class="{conference-is-hot: hasHot}">{{sayHello}}</div>
<div classname="{hasHot ? 'conference-is-hot' : ''}">{this.sayHello}</div
const confTemplate = `
<div class="${hasHot ? 'conference-is-hot' : ''}">
${this.sayHello}
</div>
`;
10
LI -H LLI -H L
LIT = LITTLE
LIT = LIGHTWEIGHT
LIT = LITERALS
11
LI -H LLI -H L
Effecient. Native templates
Expressive. FP patterns
Extensible. Different templates, frameworks
12
AR .MA V RE E DI T EAR .MA V RE E DI T E
13
AR .MA V RE E DI T EAR .MA V RE E DI T E
const employeeList = (employees) => html`
<ul>
${repeat(employees, (employee) => employee.id, (employee, index) => h
<li>${index}: ${employee.familyName}, ${employee.givenName}</li>
`)}
</ul>
`;
13
AR .MA V RE E DI T EAR .MA V RE E DI T E
const employeeList = (employees) => html`
<ul>
${repeat(employees, (employee) => employee.id, (employee, index) => h
<li>${index}: ${employee.familyName}, ${employee.givenName}</li>
`)}
</ul>
`;
html`
<ul>
${items.map((item) => html`<li>${item}</li>`)}
</ul>
`;
13
NO NNO N
14
NO NNO N
import {html} from 'lit-html';
html`<slot>Sorry, no content available. I am just fallback content</slot>
14
NO NNO N
import {html} from 'lit-html';
html`<slot>Sorry, no content available. I am just fallback content</slot>
import {nothing, html} from 'lit-html';
html`
<shadow-element>${user.isAdmin
? html`<button>DELETE</button>`
: nothing
}</shadow-element>
`;
14
OTOT
15
OTOT
Cache
15
OTOT
ShadyHtml & ShadyCSS
Cache
15
OTOT
Asynchronous directives
Cache
ShadyHtml & ShadyCSS
15
OTOT
Built-in directives
Cache
ShadyHtml & ShadyCSS
Asynchronous directives
15
TOTO
16
TOTO
16
ВЕ М ЕНВЕ М ЕН
17
ВЕ М ЕНВЕ М ЕН
Інкапсуляція
Ізоляція
Комбінованість
18
ВЕ М ЕНВЕ М ЕН
Нативні Вебкомпоненти
19
ВЕ М ЕНВЕ М ЕН
Нативні Вебкомпоненти
Elements Custom Elements
19
ВЕ М ЕНВЕ М ЕН
Нативні Вебкомпоненти
DOM Encapsulation Shadow DOM
Elements Custom Elements
19
ВЕ М ЕНВЕ М ЕН
Нативні Вебкомпоненти
Style Encapsulation Shadow DOM
Elements Custom Elements
DOM Encapsulation Shadow DOM
19
ВЕ М ЕНВЕ М ЕН
Нативні Вебкомпоненти
Pseudo-Elements CSS Shadow Parts
Elements Custom Elements
DOM Encapsulation Shadow DOM
Style Encapsulation Shadow DOM
19
ВЕ М ЕНВЕ М ЕН
Нативні Вебкомпоненти
ARIA Accessibility Object Model
Elements Custom Elements
DOM Encapsulation Shadow DOM
Style Encapsulation Shadow DOM
Pseudo-Elements CSS Shadow Parts
19
Justin Fagnani
WE CO N S AR LO LE DO APWE CO N S AR LO LE DO AP
20
Justin Fagnani
Me :)
WE CO N S AR LO LE DO APWE CO N S AR LO LE DO AP
LI -EL T AR HI LE DO APLI -EL T AR HI LE DO AP
20
П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ
21
П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ
Створення DOM з шаблону
21
П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ
Ефективне оновлення DOM
Створення DOM з шаблону
21
П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ
Реактивність властивостей і данних
Створення DOM з шаблону
Ефективне оновлення DOM
21
П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ
Перевикористання та інкапсуляція стилів
Створення DOM з шаблону
Ефективне оновлення DOM
Реактивність властивостей і данних
21
П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ
Обов’язкові дії (створення Shadow Root)
Створення DOM з шаблону
Ефективне оновлення DOM
Реактивність властивостей і данних
Перевикористання та інкапсуляція стилів
21
П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ
...
Створення DOM з шаблону
Ефективне оновлення DOM
Реактивність властивостей і данних
Перевикористання та інкапсуляція стилів
Обов’язкові дії (створення Shadow Root)
21
LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ?
22
LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ?
Фреймворк?
22
LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ?
Поліфіл?
Фреймворк?
22
LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ?
Бібліотека?
Фреймворк?
Поліфіл?
22
LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ?
Лише базовий клас!
Фреймворк?
Поліфіл?
Бібліотека?
22
LI -EL TLI -EL T
class HelloElement extends LitElement {
static properties = {
conference: String
};
render() {
return html`<div>Hello ${this.conference}</div>`;
}
}
customElements.define('hello-world', HelloElement);
< html>
< head>
<script type="module" src="./hello-element.js"></script>
< /head>
< body>
<hello-world conference="JSFest"></hello-world>
<hello-world conference="Kyiv"></hello-world>
< /body>
< /html>
23
CC
class HelloElement extends LitElement {
static properties = {
conference: String
};
static styles = css`
:host {
background: purple;
}
div {
color: yellow;
}
`;
render() {
return html`<div>Hello ${this.conference}</div>`;
}
}
customElements.define('hello-world', HelloElement);
<hello-world conference="JSFest"></hello-world>
<div>Zhytomyr</div>
<hello-world conference="Kyiv"></hello-world>
24
**
СУПЕР УНІВЕРСАЛЬНИЙ СЕЛЕКТОРСУПЕР УНІВЕРСАЛЬНИЙ СЕЛЕКТОР
25
В А Т ТІВ А Т ТІ
26
В А Т ТІВ А Т ТІ
ТИПТИП
class HelloElement extends LitElement {
static get properties() {
'fontFamily': {
type: String,
},
};
}
26
В А Т ТІВ А Т ТІ
ІМ’ЯІМ’Я
class HelloElement extends LitElement {
static get properties() {
'fontFamily': {
type: String,
attributeName: 'font-family'
},
};
}
26
В А Т ТІВ А Т ТІ
РЕФЛЕКЦІЯРЕФЛЕКЦІЯ
class HelloElement extends LitElement {
static get properties() {
'fontFamily': {
type: String,
attributeName: 'font-family',
reflect: true
},
};
}
26
В А Т ТІВ А Т ТІ
ВЛАСНА УМОВАВЛАСНА УМОВА
class HelloElement extends LitElement {
static get properties() {
'fontFamily': {
type: String,
attributeName: 'font-family',
reflect: true,
hasChanged(value, oldValue) {
return value.type !== 'ttf'
}
},
};
}
26
В А Т ТІВ А Т ТІ
КОНВЕРТЕРКОНВЕРТЕР
class HelloElement extends LitElement {
static get properties() {
'fontFamily': {
type: String,
attributeName: 'font-family',
reflect: true,
hasChanged(value, oldValue) {
return value.type !== 'ttf'
},
converter: {
fromAttribute: (value, type) => { }
toAttribute: (value, type) => { }
}
},
};
}
26
ЖИ ЄВИЙ ЦИЖИ ЄВИЙ ЦИ
API постійно змінюється
@todo updateComplete
27
RE TU TRE TU T
28
UP CO LUP CO L
// `async` makes the function return a Promise & lets you use `await`
async myFunc(data) {
// Set a property, triggering an update
this.myProp = data;
// Wait for the updateComplete promise to resolve
await this.updateComplete;
// ...do stuff...
return 'done';
}
29
ВИ С А Н З ДЕ ТО ТАВИ С А Н З ДЕ ТО ТА
TT
@customElement('hello-world')
class HelloElement extends LitElement {
@property() name;
render() {
return html`<div>Hello ${this.conference}</div>`;
}
}
30
MO / NO LEMO / NO LE
<script type="module" src="component.js"></script>
<script nomodule="" src="component-die-ie.js"></script>
31
ІН Е Р ІЯ КО Н ІВ ІІН Е Р ІЯ КО Н ІВ І
ПЕ КО Т Я У VU /REПЕ КО Т Я У VU /RE
[ТУТ МАВ БУДЕ КОД, АЛЕ ЦЕ НЕ ПОТРІБНО][ТУТ МАВ БУДЕ КОД, АЛЕ ЦЕ НЕ ПОТРІБНО]
32
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
В ПРОЕКТІВ ПРОЕКТІ
33
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
В ПРОЕКТІВ ПРОЕКТІ
Вебкомпоненти всюди
33
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
В ПРОЕКТІВ ПРОЕКТІ
Продано першим трьом замовникам
Вебкомпоненти всюди
33
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
В ПРОЕКТІВ ПРОЕКТІ
Більше ніхто не звільняється
Вебкомпоненти всюди
Продано першим трьом замовникам
33
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
LIT-ELEMENT & LIT-HTMLLIT-ELEMENT & LIT-HTML
34
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
LIT-ELEMENT & LIT-HTMLLIT-ELEMENT & LIT-HTML
Літ елемент буде зменшуватись до повного знищення
34
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
LIT-ELEMENT & LIT-HTMLLIT-ELEMENT & LIT-HTML
Літ хтмл буде інтегруватись в стандарт
Літ елемент буде зменшуватись до повного знищення
34
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
У ВЕБКОМПОНЕНТАХУ ВЕБКОМПОНЕНТАХ
35
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
У ВЕБКОМПОНЕНТАХУ ВЕБКОМПОНЕНТАХ
Вебкомпоненти всюди
35
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
У ВЕБКОМПОНЕНТАХУ ВЕБКОМПОНЕНТАХ
Стандартизація
Вебкомпоненти всюди
35
РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є
У ВЕБКОМПОНЕНТАХУ ВЕБКОМПОНЕНТАХ
Інтеграція з фреймворками
Вебкомпоненти всюди
Стандартизація
35
ПО Н ЯПО Н Я
36
ПО Н ЯПО Н Я
lit-element.polymer-project.org
36
ПО Н ЯПО Н Я
lit-element.polymer-project.org
lit-html.polymer-project.org
36
ПО Н ЯПО Н Я
lit-element.polymer-project.org
lit-html.polymer-project.org
github.com/web-padawan/awesome-lit-html
36
ПО Н ЯПО Н Я
lit-element.polymer-project.org
lit-html.polymer-project.org
github.com/web-padawan/awesome-lit-html
vaadin.com/tutorials/lit-element/starting-a-lit-element-project
36
ПО Н ЯПО Н Я
lit-element.polymer-project.org
lit-html.polymer-project.org
github.com/web-padawan/awesome-lit-html
vaadin.com/tutorials/lit-element/starting-a-lit-element-project
www.webcomponents.org
36
ПО Н ЯПО Н Я
lit-element.polymer-project.org
lit-html.polymer-project.org
github.com/web-padawan/awesome-lit-html
vaadin.com/tutorials/lit-element/starting-a-lit-element-project
www.webcomponents.org
[DevFest Nantes 2019] Building a Complex Application with Web
Components and LitElement
36
ЯК МЕ З АЙТИЯК МЕ З АЙТИ
Twitter: sssrsav1
Telegram: @RomanSavitskyi
https://www.facebook.com/groups/beerJSZhytomyr
37

More Related Content

Similar to Роман Савіцький, "Webcomponents & lit-element in production."

Невивчені уроки або логи антивірусних війн
Невивчені уроки або логи антивірусних війнНевивчені уроки або логи антивірусних війн
Невивчені уроки або логи антивірусних війнVladyslav Radetsky
 
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020OdessaJS Conf
 
10 asp.net
10 asp.net 10 asp.net
10 asp.net eleksdev
 
Grok web application framework
Grok web application frameworkGrok web application framework
Grok web application frameworkQuintagroup
 
Порівняння Drupal та Typo3
Порівняння Drupal та Typo3Порівняння Drupal та Typo3
Порівняння Drupal та Typo3Drupal Camp Kyiv
 
порівняння Drupal та Typo3
порівняння Drupal та Typo3порівняння Drupal та Typo3
порівняння Drupal та Typo3Inna Tuyeva
 
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковJoomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковIgor Bronovskyy
 
"Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st..."Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st...Fwdays
 
"How I don't need a state management library in React app", Tetiana Melnyk
"How I don't need a state management library in React app", Tetiana Melnyk "How I don't need a state management library in React app", Tetiana Melnyk
"How I don't need a state management library in React app", Tetiana Melnyk Fwdays
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CMaksym Davydov
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon Meetups
 
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...Igor Bronovskyy
 
Випускна робота Лемеш
Випускна робота ЛемешВипускна робота Лемеш
Випускна робота Лемешvitaliy_galata
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii NasinnykFwdays
 
Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764PavloTsiura
 

Similar to Роман Савіцький, "Webcomponents & lit-element in production." (20)

Невивчені уроки або логи антивірусних війн
Невивчені уроки або логи антивірусних війнНевивчені уроки або логи антивірусних війн
Невивчені уроки або логи антивірусних війн
 
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
 
10 asp.net
10 asp.net 10 asp.net
10 asp.net
 
Grok web application framework
Grok web application frameworkGrok web application framework
Grok web application framework
 
Порівняння Drupal та Typo3
Порівняння Drupal та Typo3Порівняння Drupal та Typo3
Порівняння Drupal та Typo3
 
порівняння Drupal та Typo3
порівняння Drupal та Typo3порівняння Drupal та Typo3
порівняння Drupal та Typo3
 
ASP.Net basics
ASP.Net basics ASP.Net basics
ASP.Net basics
 
Html5
Html5Html5
Html5
 
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій МаренковJoomla 3. Що нового для розробників у новій версії - Віталій Маренков
Joomla 3. Що нового для розробників у новій версії - Віталій Маренков
 
"Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st..."Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st...
 
"How I don't need a state management library in React app", Tetiana Melnyk
"How I don't need a state management library in React app", Tetiana Melnyk "How I don't need a state management library in React app", Tetiana Melnyk
"How I don't need a state management library in React app", Tetiana Melnyk
 
ASP.Net MVC
ASP.Net MVCASP.Net MVC
ASP.Net MVC
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-C
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020
 
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
 
Twig in symfony
Twig in symfonyTwig in symfony
Twig in symfony
 
Випускна робота Лемеш
Випускна робота ЛемешВипускна робота Лемеш
Випускна робота Лемеш
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii Nasinnyk
 
7_0711.pptx
7_0711.pptx7_0711.pptx
7_0711.pptx
 
Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764
 

More from Sigma Software

Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIsFast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIsSigma Software
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur""Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"Sigma Software
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"Sigma Software
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...Sigma Software
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"Sigma Software
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"Sigma Software
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...Sigma Software
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”Sigma Software
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"Sigma Software
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...Sigma Software
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"Sigma Software
 
Business digitalization trends and challenges
Business digitalization trends and challengesBusiness digitalization trends and challenges
Business digitalization trends and challengesSigma Software
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Sigma Software
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”Sigma Software
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”Sigma Software
 
Training solutions and content creation
Training solutions and content creationTraining solutions and content creation
Training solutions and content creationSigma Software
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid themFalse news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid themSigma Software
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...Sigma Software
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...Sigma Software
 

More from Sigma Software (20)

Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIsFast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIs
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur""Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
 
VOLVO x HACK SPRINT
VOLVO x HACK SPRINTVOLVO x HACK SPRINT
VOLVO x HACK SPRINT
 
Business digitalization trends and challenges
Business digitalization trends and challengesBusiness digitalization trends and challenges
Business digitalization trends and challenges
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
 
Training solutions and content creation
Training solutions and content creationTraining solutions and content creation
Training solutions and content creation
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid themFalse news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid them
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
 

Роман Савіцький, "Webcomponents & lit-element in production."

  • 1. WE M EN & LI -EL T INWE M EN & LI -EL T IN P O C OP O C O 1
  • 2. Х О ЯХ О Я Infopulse team/tech lead BeerJS Zhytomyr OdessaJS / Frontend://zt Суддя DEV Challenge Спікер 2
  • 3. Г У Н 2016Г У Н 2016 3
  • 4. Г У Н 2016Г У Н 2016 Попередній стек: Coffeescript, Pug, Stylus 3
  • 5. Г У Н 2016Г У Н 2016 Визначаємо майбутній стек Попередній стек: Coffeescript, Pug, Stylus 3
  • 6. Г У Н 2016Г У Н 2016 Аналізуємо ринок Попередній стек: Coffeescript, Pug, Stylus Визначаємо майбутній стек 3
  • 7. Г У Н 2016Г У Н 2016 Отримуємо деталі ТЗ Попередній стек: Coffeescript, Pug, Stylus Визначаємо майбутній стек Аналізуємо ринок 3
  • 8. РЕ Т : ПО Н А ЗА ІРЕ Т : ПО Н А ЗА І Мінімальний об’єм збірки Підтримка ІЕ11 Перевикористання коду Автономність Можливість наповнення менеджерами 4
  • 10. С Е П О ТС Е П О Т Січень - лютий 6
  • 11. С Е П О ТС Е П О Т Січень - лютий 6
  • 12. С Е П О ТС Е П О Т Січень - лютий 6
  • 13. С Е П О ТС Е П О Т Січень - лютий 6
  • 14. С Е П О ТС Е П О Т Січень - лютий 6
  • 15. С Е П О ТС Е П О Т Січень - лютий 6
  • 16. Травень 2017 ВИ ІШИ ВИ ТИ "НА НІ" ВЕВИ ІШИ ВИ ТИ "НА НІ" ВЕ КО Н И ДО ТО , ЯК ЦЕ С АКО Н И ДО ТО , ЯК ЦЕ С А МЕЙН РІМОМЕЙН РІМО 7
  • 17. КО Н И / Ф ЕЙМ О ККО Н И / Ф ЕЙМ О К 8
  • 18. КО Н И / Ф ЕЙМ О ККО Н И / Ф ЕЙМ О К 8
  • 19. КО Н И / Ф ЕЙМ О ККО Н И / Ф ЕЙМ О К 8
  • 20. КО Н И / Ф ЕЙМ О ККО Н И / Ф ЕЙМ О К 8
  • 21. PO M -> LI -EL T, LI -H LPO M -> LI -EL T, LI -H L Травень 2017, Google IO
  • 22. 9
  • 23. LI -H L. TE L TI NELI -H L. TE L TI NE 10
  • 24. LI -H L. TE L TI NELI -H L. TE L TI NE var div = document.createElement('div'); div.setAttribute('class', 'conference-is-hot'); 10
  • 25. LI -H L. TE L TI NELI -H L. TE L TI NE var div = document.createElement('div'); div.setAttribute('class', 'conference-is-hot'); document.body.innerHTML = '<div class="conference-is-hot">Hello</div>'; 10
  • 26. LI -H L. TE L TI NELI -H L. TE L TI NE var div = document.createElement('div'); div.setAttribute('class', 'conference-is-hot'); document.body.innerHTML = '<div class="conference-is-hot">Hello</div>'; <div ng-class="{conference-is-hot: hasHot}">{{sayHello}}</div> 10
  • 27. LI -H L. TE L TI NELI -H L. TE L TI NE var div = document.createElement('div'); div.setAttribute('class', 'conference-is-hot'); document.body.innerHTML = '<div class="conference-is-hot">Hello</div>'; <div ng-class="{conference-is-hot: hasHot}">{{sayHello}}</div> <div classname="{hasHot ? 'conference-is-hot' : ''}">{this.sayHello}</div 10
  • 28. LI -H L. TE L TI NELI -H L. TE L TI NE var div = document.createElement('div'); div.setAttribute('class', 'conference-is-hot'); document.body.innerHTML = '<div class="conference-is-hot">Hello</div>'; <div ng-class="{conference-is-hot: hasHot}">{{sayHello}}</div> <div classname="{hasHot ? 'conference-is-hot' : ''}">{this.sayHello}</div const confTemplate = ` <div class="${hasHot ? 'conference-is-hot' : ''}"> ${this.sayHello} </div> `; 10
  • 29. LI -H LLI -H L LIT = LITTLE LIT = LIGHTWEIGHT LIT = LITERALS 11
  • 30. LI -H LLI -H L Effecient. Native templates Expressive. FP patterns Extensible. Different templates, frameworks 12
  • 31. AR .MA V RE E DI T EAR .MA V RE E DI T E 13
  • 32. AR .MA V RE E DI T EAR .MA V RE E DI T E const employeeList = (employees) => html` <ul> ${repeat(employees, (employee) => employee.id, (employee, index) => h <li>${index}: ${employee.familyName}, ${employee.givenName}</li> `)} </ul> `; 13
  • 33. AR .MA V RE E DI T EAR .MA V RE E DI T E const employeeList = (employees) => html` <ul> ${repeat(employees, (employee) => employee.id, (employee, index) => h <li>${index}: ${employee.familyName}, ${employee.givenName}</li> `)} </ul> `; html` <ul> ${items.map((item) => html`<li>${item}</li>`)} </ul> `; 13
  • 35. NO NNO N import {html} from 'lit-html'; html`<slot>Sorry, no content available. I am just fallback content</slot> 14
  • 36. NO NNO N import {html} from 'lit-html'; html`<slot>Sorry, no content available. I am just fallback content</slot> import {nothing, html} from 'lit-html'; html` <shadow-element>${user.isAdmin ? html`<button>DELETE</button>` : nothing }</shadow-element> `; 14
  • 41. OTOT Built-in directives Cache ShadyHtml & ShadyCSS Asynchronous directives 15
  • 44. ВЕ М ЕНВЕ М ЕН 17
  • 45. ВЕ М ЕНВЕ М ЕН Інкапсуляція Ізоляція Комбінованість 18
  • 46. ВЕ М ЕНВЕ М ЕН Нативні Вебкомпоненти 19
  • 47. ВЕ М ЕНВЕ М ЕН Нативні Вебкомпоненти Elements Custom Elements 19
  • 48. ВЕ М ЕНВЕ М ЕН Нативні Вебкомпоненти DOM Encapsulation Shadow DOM Elements Custom Elements 19
  • 49. ВЕ М ЕНВЕ М ЕН Нативні Вебкомпоненти Style Encapsulation Shadow DOM Elements Custom Elements DOM Encapsulation Shadow DOM 19
  • 50. ВЕ М ЕНВЕ М ЕН Нативні Вебкомпоненти Pseudo-Elements CSS Shadow Parts Elements Custom Elements DOM Encapsulation Shadow DOM Style Encapsulation Shadow DOM 19
  • 51. ВЕ М ЕНВЕ М ЕН Нативні Вебкомпоненти ARIA Accessibility Object Model Elements Custom Elements DOM Encapsulation Shadow DOM Style Encapsulation Shadow DOM Pseudo-Elements CSS Shadow Parts 19
  • 52. Justin Fagnani WE CO N S AR LO LE DO APWE CO N S AR LO LE DO AP 20
  • 53. Justin Fagnani Me :) WE CO N S AR LO LE DO APWE CO N S AR LO LE DO AP LI -EL T AR HI LE DO APLI -EL T AR HI LE DO AP 20
  • 54. П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ 21
  • 55. П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ Створення DOM з шаблону 21
  • 56. П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ Ефективне оновлення DOM Створення DOM з шаблону 21
  • 57. П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ Реактивність властивостей і данних Створення DOM з шаблону Ефективне оновлення DOM 21
  • 58. П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ Перевикористання та інкапсуляція стилів Створення DOM з шаблону Ефективне оновлення DOM Реактивність властивостей і данних 21
  • 59. П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ Обов’язкові дії (створення Shadow Root) Створення DOM з шаблону Ефективне оновлення DOM Реактивність властивостей і данних Перевикористання та інкапсуляція стилів 21
  • 60. П О ІЛИ В С Е ФІКА ІЯХП О ІЛИ В С Е ФІКА ІЯХ ... Створення DOM з шаблону Ефективне оновлення DOM Реактивність властивостей і данних Перевикористання та інкапсуляція стилів Обов’язкові дії (створення Shadow Root) 21
  • 61. LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ? 22
  • 62. LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ? Фреймворк? 22
  • 63. LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ? Поліфіл? Фреймворк? 22
  • 64. LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ? Бібліотека? Фреймворк? Поліфіл? 22
  • 65. LI -EL T. ЩО ЦЕ?LI -EL T. ЩО ЦЕ? Лише базовий клас! Фреймворк? Поліфіл? Бібліотека? 22
  • 66. LI -EL TLI -EL T class HelloElement extends LitElement { static properties = { conference: String }; render() { return html`<div>Hello ${this.conference}</div>`; } } customElements.define('hello-world', HelloElement); < html> < head> <script type="module" src="./hello-element.js"></script> < /head> < body> <hello-world conference="JSFest"></hello-world> <hello-world conference="Kyiv"></hello-world> < /body> < /html> 23
  • 67. CC class HelloElement extends LitElement { static properties = { conference: String }; static styles = css` :host { background: purple; } div { color: yellow; } `; render() { return html`<div>Hello ${this.conference}</div>`; } } customElements.define('hello-world', HelloElement); <hello-world conference="JSFest"></hello-world> <div>Zhytomyr</div> <hello-world conference="Kyiv"></hello-world> 24
  • 68. ** СУПЕР УНІВЕРСАЛЬНИЙ СЕЛЕКТОРСУПЕР УНІВЕРСАЛЬНИЙ СЕЛЕКТОР 25
  • 69. В А Т ТІВ А Т ТІ 26
  • 70. В А Т ТІВ А Т ТІ ТИПТИП class HelloElement extends LitElement { static get properties() { 'fontFamily': { type: String, }, }; } 26
  • 71. В А Т ТІВ А Т ТІ ІМ’ЯІМ’Я class HelloElement extends LitElement { static get properties() { 'fontFamily': { type: String, attributeName: 'font-family' }, }; } 26
  • 72. В А Т ТІВ А Т ТІ РЕФЛЕКЦІЯРЕФЛЕКЦІЯ class HelloElement extends LitElement { static get properties() { 'fontFamily': { type: String, attributeName: 'font-family', reflect: true }, }; } 26
  • 73. В А Т ТІВ А Т ТІ ВЛАСНА УМОВАВЛАСНА УМОВА class HelloElement extends LitElement { static get properties() { 'fontFamily': { type: String, attributeName: 'font-family', reflect: true, hasChanged(value, oldValue) { return value.type !== 'ttf' } }, }; } 26
  • 74. В А Т ТІВ А Т ТІ КОНВЕРТЕРКОНВЕРТЕР class HelloElement extends LitElement { static get properties() { 'fontFamily': { type: String, attributeName: 'font-family', reflect: true, hasChanged(value, oldValue) { return value.type !== 'ttf' }, converter: { fromAttribute: (value, type) => { } toAttribute: (value, type) => { } } }, }; } 26
  • 75. ЖИ ЄВИЙ ЦИЖИ ЄВИЙ ЦИ API постійно змінюється @todo updateComplete 27
  • 76. RE TU TRE TU T 28
  • 77. UP CO LUP CO L // `async` makes the function return a Promise & lets you use `await` async myFunc(data) { // Set a property, triggering an update this.myProp = data; // Wait for the updateComplete promise to resolve await this.updateComplete; // ...do stuff... return 'done'; } 29
  • 78. ВИ С А Н З ДЕ ТО ТАВИ С А Н З ДЕ ТО ТА TT @customElement('hello-world') class HelloElement extends LitElement { @property() name; render() { return html`<div>Hello ${this.conference}</div>`; } } 30
  • 79. MO / NO LEMO / NO LE <script type="module" src="component.js"></script> <script nomodule="" src="component-die-ie.js"></script> 31
  • 80. ІН Е Р ІЯ КО Н ІВ ІІН Е Р ІЯ КО Н ІВ І ПЕ КО Т Я У VU /REПЕ КО Т Я У VU /RE [ТУТ МАВ БУДЕ КОД, АЛЕ ЦЕ НЕ ПОТРІБНО][ТУТ МАВ БУДЕ КОД, АЛЕ ЦЕ НЕ ПОТРІБНО] 32
  • 81. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є В ПРОЕКТІВ ПРОЕКТІ 33
  • 82. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є В ПРОЕКТІВ ПРОЕКТІ Вебкомпоненти всюди 33
  • 83. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є В ПРОЕКТІВ ПРОЕКТІ Продано першим трьом замовникам Вебкомпоненти всюди 33
  • 84. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є В ПРОЕКТІВ ПРОЕКТІ Більше ніхто не звільняється Вебкомпоненти всюди Продано першим трьом замовникам 33
  • 85. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є LIT-ELEMENT & LIT-HTMLLIT-ELEMENT & LIT-HTML 34
  • 86. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є LIT-ELEMENT & LIT-HTMLLIT-ELEMENT & LIT-HTML Літ елемент буде зменшуватись до повного знищення 34
  • 87. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є LIT-ELEMENT & LIT-HTMLLIT-ELEMENT & LIT-HTML Літ хтмл буде інтегруватись в стандарт Літ елемент буде зменшуватись до повного знищення 34
  • 88. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є У ВЕБКОМПОНЕНТАХУ ВЕБКОМПОНЕНТАХ 35
  • 89. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є У ВЕБКОМПОНЕНТАХУ ВЕБКОМПОНЕНТАХ Вебкомпоненти всюди 35
  • 90. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є У ВЕБКОМПОНЕНТАХУ ВЕБКОМПОНЕНТАХ Стандартизація Вебкомпоненти всюди 35
  • 91. РЕ Ь И ТА МАЙБУ ЄРЕ Ь И ТА МАЙБУ Є У ВЕБКОМПОНЕНТАХУ ВЕБКОМПОНЕНТАХ Інтеграція з фреймворками Вебкомпоненти всюди Стандартизація 35
  • 92. ПО Н ЯПО Н Я 36
  • 93. ПО Н ЯПО Н Я lit-element.polymer-project.org 36
  • 94. ПО Н ЯПО Н Я lit-element.polymer-project.org lit-html.polymer-project.org 36
  • 95. ПО Н ЯПО Н Я lit-element.polymer-project.org lit-html.polymer-project.org github.com/web-padawan/awesome-lit-html 36
  • 96. ПО Н ЯПО Н Я lit-element.polymer-project.org lit-html.polymer-project.org github.com/web-padawan/awesome-lit-html vaadin.com/tutorials/lit-element/starting-a-lit-element-project 36
  • 97. ПО Н ЯПО Н Я lit-element.polymer-project.org lit-html.polymer-project.org github.com/web-padawan/awesome-lit-html vaadin.com/tutorials/lit-element/starting-a-lit-element-project www.webcomponents.org 36
  • 98. ПО Н ЯПО Н Я lit-element.polymer-project.org lit-html.polymer-project.org github.com/web-padawan/awesome-lit-html vaadin.com/tutorials/lit-element/starting-a-lit-element-project www.webcomponents.org [DevFest Nantes 2019] Building a Complex Application with Web Components and LitElement 36
  • 99. ЯК МЕ З АЙТИЯК МЕ З АЙТИ Twitter: sssrsav1 Telegram: @RomanSavitskyi https://www.facebook.com/groups/beerJSZhytomyr 37