«Разрушаем Вавилонскую Башню WWW с помощью...

48

Transcript of «Разрушаем Вавилонскую Башню WWW с помощью...

Page 1: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 3: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 4: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Demolishing the Babel Tower of WWW

Page 5: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

If apps are bricks in the tower they do not matchSince frameworks are not compatible and

every component is reinvented twice

Page 6: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 7: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Web components

✓ Native (no Babylon)✓ Reusable✓ Composable✓ UI abstraction

Page 8: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

How does it feel?

<calendar></calendar>

Page 9: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

As simple as

<map></map>

Page 10: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Exposing APIs

<map lang='52.37' att='4.88'></map>

Page 11: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Exposing APIs

<calendar chosen='2014-06-19'></calendar>

Page 12: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 13: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

IssuesThat is not the heaven

Page 14: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Web Components spare parts

HTML Templates – ScaffoldingHTML Import – PackagingShadow DOM – EncapsulationCustom elements...

Page 15: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Web Components spare parts

HTML Templates – ScaffoldingHTML Import – PackagingShadow DOM – EncapsulationCustom elements...

Page 16: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Web Components spare parts

HTML Templates – PolyfillHTML Import – PolyfillShadow DOM – PolyfillCustom elements...

Page 17: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Web Components spare parts

HTML Templates – PolyfillHTML Import – PolyfillShadow DOM – PolyfillCustom elements...

Page 18: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Web components

✓ Native (no Babylon)✓ Reusability✓ Composability✓ UI abstraction☓ Production ready

Page 19: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

One more troubleCome on! Are not three polyfills

enough of troubles?

Page 20: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Web components

✓ Native (no Babylon)✓ Reusability✓ Composability✓ UI abstraction☓ Production ready☓ Development efficiency

Page 21: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Web componentsBad browser compatibility

Low performance

Bad development efficiency

Page 22: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Need more maturer wayMay be something from existing

frameworks?

Page 23: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Conceptually close

✓ Reusability✓ Composability✓ UI abstraction (JSX)✓ Production ready✓ Development efficiency☓ Native (F*cking Babylon)

Page 24: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

What solves?

✓ Templating via JSX✓ Import via Webpack✓ Encapsulation✓ Well known development flow✓ Less DOM manipulations

Page 25: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 26: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

+

=

Page 27: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Let`s get the foam!

Page 28: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Reactive Elements dependencies

☓ HTML Templates☓ HTML Import☓ Shadow DOM✓ Custom Elements

1 of 4? Much better!

Page 29: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Reactive Elements dependencies

✓ Native✓ Reusability✓ Composability✓ UI abstraction✓ Production ready (actually used)✓ Development efficiency

Page 30: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

How to convert React component into a Web component?

document.registerReact('component-name', MyReactClass);

Page 32: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 34: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

And not React only...

document.registerReact('component-name', MyReactClass);

document.registerAngular('component-name', 'moduleName');

document.registerBackbone('component-name', BackboneView);

Page 35: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 36: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

How to run itAutomatic initialization

Manual start up

Page 37: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

So

Page 38: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

and how to get the Scope?

Page 39: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 40: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Ok it can be easyfor isolated scope

for non-isolated scope

so the scope with properties and methods:

Page 42: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

MVC Elementshttps://github.com/MVC-Elements

Page 43: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

How does it work together?

1. getElementByID('angular-component');2. getElementByID('react-component');3. var data = angular-component.getData();4. react-component.display(data);or5. react-component.setAttribute('data', data);

Page 44: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 45: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»
Page 46: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

MVC Elementshttps://github.com/MVC-Elements

Page 47: «Разрушаем Вавилонскую Башню WWW с помощью веб-компонент»

Questions ?https://github.com/MVC-Elements