Web Components
Rewolucja w budowaniu aplikacji internetowych
Marcin Warpechowski (@warpech)
Tech.3camp
Gdynia, 25.03.2014
Lustro w HTML
<video is="camera">
Lustro w HTML
<link rel="import" href="comp/camera.html">
<video is="camera" audio autoplay controls></video>
Odtwarzacz anim. GIFów
Odtwarzacz anim. GIFów
<link rel="import" href="comp/x-gif.html">
<x-gif src="http://i.imgur.com/5KSc0px.gif" speed="5"></x-gif>
O mnie
- Programista JavaScript
-
Wcześniej zajmowałem się również Flashem i PHP
(prezentacja nt. Flasha na 3campie w 2009)
-
Stworzyłem i rozwijam plugin jQuery Handsontable, obecnie we 2 osoby
- Wdrażam Web Components w przyszłościowym projekcie, do jakiego zatrudniła mnie firma Starcounter
Jak dziś tworzy się aplikacje internetowe
Dodajmy ocenianie gwiazdkami na naszej stronie internetowej
★★★★☆
Po co tworzyć własny element? Znajdę jakiś plugin
Jest ich dużo, więc poprzeglądam jaki mam wybór
W końcu wybrałem najfajniejszy
Tylko jak to zintegrować?
Działa
Trochę śmieci (klasy CSS, divy) - ale co tam!
Czy można prościej?
<link rel="import" href="comp/polymer-ui-ratings.html">
<polymer-ui-ratings value="3"></polymer-ui-ratings>
Web Components
1. Templates
Reużywalność - Pozwalają zdefiniować powtarzające się fragmenty DOM
<template id="tpl">
Hello world!
</template>
2. Shadow DOM
Encapsulation (pl. hermetyzacja)
Dowolny element HTML może mieć
wewnątrz swój własny DOM.
Jego elementy i style nie wyciekają na zewnątrz.
Zewnętrzne style nie przeciekają do wewnątrz.
2. Shadow DOM
Przykładem jest tag <video>:
2. Shadow DOM
2. Shadow DOM
3. Custom Elements
=
Templates
+
Shadow DOM
Tworzenie własnych tagów HTML!
3. Custom Elements
<my-gravatar email="albert.einstein.starcounter@gmail.com"></my-gravatar>
3. Custom Elements
4. HTML Imports
<link rel="import" href="my-gravatar.html">
Nie jedna a kilka specyfikacji
Wsparcie przeglądarek
Natywnie: Google Chrome
Polyfills (Polymer):
Kto tworzy Web Components?
Google Chrome
Polymer (Google)
x-tags (Mozilla)
Brick (Mozilla)
Dlaczego Web Components to rewolucja
- Ustalenie standardu to koniec wojny bibliotek JavaScript
- Standardy rzadko się zmieniają
- Deklaratywne "programowanie" w HTML
- Zdecentralizowany katalog komponentów
- Reużywalność komponentów, możliwość dowolnego ich łączenia
- Encapsulation (hermetyzacja)
Jakie komponenty już istnieją?
Dlaczego warto zainteresować się już teraz
- Jest to propozycja standardu, który rozwija się na naszych oczach.
- Po raz pierwszy programiści mają szansę testować technologię i wnosić swoje uwagi, zanim stanie się ona faktem.
- Im więcej dowie się o tym dużo programistów, tym szybciej kula śnieżna nabierze rozpędu.
Pobawmy się jeszcze (Polymer Sandbox)
Dziękuję za uwagę!
Źródła ilustracji, linki
-
https://github.com/eduardolundgren/video-camera-element
-
https://github.com/geelen/x-gif
-
http://jonrimmer.github.io/are-we-componentized-yet/
-
http://webcomponents.github.io/
-
http://www.chromestatus.com/
-
http://www.polymer-project.org/
-
http://www.x-tags.org/
-
http://mozilla.github.io/brick
- http://www.starcounter.com/blogs/warpech/introduction-to-web-components/
Web Components
By warpech
Web Components
- 2,661