úterý 8. srpna 2017

Mobilní aplikace: Chemické názvosloví

Měl jsem na Google Play aplikaci Chemické názvosloví. Tuto původní jsem odstranil a nahradil novou aplikací.

Je určena pro výuku a procvičení základního anorganického názvosloví. Obsahuje info o stavbě hmoty, tabulku přípon (-ný, -natý, -itý, ...) a obecná pravidla pro tvorbu českého anorganického názvosloví.

Z názvosloví zahrnuje: oxidy, halogenidy, nitridy, hydroxidy, sulfidy, bezkyslíkaté a kyslíkaté kyseliny. Kromě výukové části nabízí i procvičení formou přiřazení správné koncovky.

Aplikace je zdarma dostupná na Google Play: Chemické názvosloví

A taky vypadá líp než ta předchozí :-)



sobota 5. srpna 2017

Framework7 + VueJS: aplikace Bitcoin price

Jako malé cvičení jsem udělal jednoduchou aplikaci, která zjistí aktuální cenu bitcoinu v dolarech a kurz České národní banky USD/CZK a zobrazí cenu bitcoinu v dolarech a v korunách.

Vizuální část aplikace

Použil jsem aktuální (srpen 2017) verzi 1.6.4 knihovny Framework7. Zobrazí se jen informační pole a tlačítko pro aktualizaci ceny.

Datová část aplikace

Tu jsem napsal ve VueJS 2.4.2 s využitím knihovny vue-resource, která umožní volat API funkce přes http protokol.

Cenu bitcoinu beru z webu coindesk, konkrétně získávám tento JSON. Kurz dolaru beru ze stránek České národní banky, konkrétně tento TXT soubor.

Cenu bitcoinu v USD a CZK zobrazuji bez desetinných míst. Trochu mi dělala problém návaznost získání dat; proto jsem pozdržel volání funkce zjišťující kurz USD/CZK o 0.7 sekundy, aby se nejprve stihla načíst cena bitconu v dolarech. Občas to zazlobí (závisí na okolnostech), pak stačí jen stisknout tlačítko update a mělo by to být OK.

Aplikace

Po spuštění se cena načte automaticky, chyby při získání dat nejsou ošetřeny. Dělal jsem to jen jako lehké cvičení.

(!!!) Aby vám to fungovalo, musíte mít v prohlížeči vyřešeno CORS, např. rozšířením CORS Toggle pro Google Chrome. (!!!)

Zdrojový kód aplikace (HTML + CSS + JS) je k dispozici přes tyto odkazy (stejný obsah):
http://play.ionic.io/app/6cf2fa2867bc
http://play.ionic.io/app/b518c1217666

Pokud si chcete kód upravit, použijte nejprve odkaz Fork v pravém horním rohu - dostanete tak svoji vlastní kopii.

Android aplikace

Pokud z toho chcete udělat androidí aplikaci (a nevíte jak), může se inspirovat mým bezplatným videokurzem Vlastní mobilní aplikace.





sobota 24. června 2017

VueJS 2: píšeme komponentu - grafický přepínač (toggle) v SVG

Napsal jsem si a odladil komponentu sloužící jako přepínač (toggle). Mám pro ni použití ve své aplikaci, kterou píšu s využitím Framework7 a VueJS.

Pro přepínač má Framework7 implementovaný switch:

<div class="item-title label">Switch</div>
<div class="item-input">
  <label class="label-switch">
    <input type="checkbox">
    <div class="checkbox"></div>
  </label>
</div>

Nepodařilo se mi ho upravit podle mých potřeb, proto jsem se rozhodl ho nahradit vlastní komponentou. Pro zamýšlené použití se hodí SVG.

Vue.component("toggle-name", {
  props: {
    value: {
      type: Boolean,
      default: false
    },
    name: {
      type: String,
      default: ""
    },
    coloroff: {
      type: String,
      default: "white"
    },
    coloron: {
      type: String,
      default: "#886aea"
    },
  },
  methods: {
    toggleValue: function(){
      this.value = !this.value;
      this.$emit("update:value", this.value);
    },
  },
  computed: {
    cx: function(){
      return this.value ? 36 : 16
    },
    fill: function(){
      return this.value ? this.coloron : this.coloroff
    }
  },
  template: '<svg @click="toggleValue()" width="52" height="32"><g ><rect x="0" y="0" width="52" height="32" rx="16" ry="16" stroke="lightgray" :fill="fill" /><circle :cx="cx" cy="16" r="16" stroke="lightgray" fill="white"/><text :x="cx" y="22" text-anchor="middle" font-size="16">{{name}}</text></g></svg>'
})


V části props jsou definovány vlastnosti (properties), jako value (hodnota přepínače false/true = off/on), name (jednoznakové jméno, A, B, C, ...), coloron (barva v poloze true), coloroff (barva v poloze false).

V části methods se při přepnutí volá metoda toggleValue, která kromě změny hodnoty emituje událost se změnou (two-way-databinding), aby se změnila i hodnota proměnné, se kterou je přepínač svázán.

V části computed se vypočítá x-ová poloha jezdce - cx, a barva výplně přepínače podle hodnoty (false/true) - fill.

V části template je definován vzhled přepínače, jedná se o grafiku SVG. Přepínač se skládá z obdélníku se zaoblenými rohy a kružnice, která mění svoji polohu v závislosti na stavu přepínače (false/true). Dovnitř kružnice je vepsán název přepínače (jedno písmeno) - name.

V HTML kódu se komponenta použije např. takhle:
<toggle-name :value.sync="A" name="A" class="toggle"></toggle-name>



pondělí 19. června 2017

Framework7 - vlastní build

Nové aplikace už dělám v kombinaci Framework7 (HTML + CSS) a VueJS (JS). 

Framework7 umožňuje provést vlastní build, tj. stručně řečeno nepoužít kompletně celý framework, ale jen dílčí část.

Návod na vlastní sestavení je srozumitelný a snadný, najdete ho v dokumentaci

Vyzkoušel jsem to na malé aplikaci; po náhradě plného F7 za vlastní build obsahující jen základ a po odstranění spouštěcích obrazovek (splash screen) má výsledná aplikace (soubor .apk) jen 200 kB.

Paráda.



sobota 27. května 2017

VueJS 2: píšeme komponentu - zobrazení chemické rovnice

Zadání

Napíšeme si komponentu, která nám zobrazí chemickou rovnici na webové stránce. Použijeme knihovnu Katex a VueJS 2.


Řešení

Název komponenty bude chemula (chemical formula) a bude obsahovat jeden atribut formula. Zobrazí chemickou rovnici pomocí Katexu.

Deklarace komponenty

Vue.component("chemula", {
  replace: true,
  props: {
    formula: {
      type: String,
      default: ""
    }
  },
  data: function(){
    return {
      chars: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz() +->=",
      numbers: "0123456789",
      upIndex: "^",
      dnIndex: "_",  
      leftBracket: "{",
      rightBracket: "}"
    }
  },
  computed: {
    textToKatex: function(){
      var text, katexStr;
      katexStr = "";
      text = " " + this.formula + "  ";

      for (var i = 1; i < text.length-1; i++){
        if (this.chars.indexOf(text[i]) !== -1){
          if (this.numbers.indexOf(text[i-1]) !== -1)
            katexStr = katexStr + this.rightBracket + text[i];
          else           
            katexStr = katexStr +text[i];
        }
        else 
          if (this.numbers.indexOf(text[i]) !== -1){
            if (this.chars.indexOf(text[i-1]) !== -1)
              katexStr = katexStr + this.dnIndex + this.leftBracket + text[i];
            else 
              katexStr = katexStr + text[i];
          }
      };
      
      katexStr = katexStr.replace(/\s\s+/g, ' ');
      katexStr = katexStr.replace(/->/g, '\\rightarrow ');
      katexStr = katexStr.replace(/=/g, '\\rightarrow ');
      try {
        return katex.renderToString(katexStr, {throwOnError: false});  
      } catch (err) {
        return "" 
      }
    }
  },
  template: '<span v-html="textToKatex"></span>'
});

Do atributu formula vložíme zápis chemické rovnice. Ten se prochází znak po znaku a postupně se přidává do proměnné katexStr i se speciálními znaky (dolní index, složená závorka). Výsledný zápis se do HTML kódu vloží v části template, která zobrazí řetězec v Katexu, získaný v části computed.

Použití v HTML kódu

Do webové stránky vložíme komponentu s rovnicí, např.:
<chemula formula="H2SO4 = H2O + SO3" ></chemula>

Jak to vypadá prakticky si můžete ověřit tady (pokud chcete provést úpravy, nejprve prosím klepněte vpravo nahoře na fork, dostanete tak vlastní kopii).


pátek 26. května 2017

VueJS 2: píšeme komponentu - zobrazení matematického výrazu (Katex) v SVG

Řešil jsem docela zajímavý problém. Jak zobrazit matematický výraz pomocí Katexu (implementace Latexu od Khan Academy) do vektorové grafiky SVG.

Nevím o žádném přímém a bezprostředním řešení. Proto jsem experimentoval a přišel jsem na zajímavý trik, jak dostat vygenerovaný výraz do SVG tak, aby šel zobrazit.

Trik spočívá ve využití <foreignObject>, kterým lze do SVG dostat obsah, jež samotné SVG nepodporuje. S trochou práce a štěstí se mi podařilo docílit výsledku.

Ukázka je dostupná tady: http://play.ionic.io/app/f3452825f611

pátek 12. května 2017

Videokurz: Vlastní mobilní aplikace - I

Pro zájemce o vlastní mobilní aplikaci jsem publikoval videokurz "Vlastní mobilní aplikace".

Obejdeme se bez programování - nemusíte tedy umět programovat.

Kurz je česky a zdarma. K napsání vlastní aplikace, která zobrazí vámi vložený obsah (text, obrázky, ...) stačí jen znalost HTML. Celý postup je názorně vysvětlen v průběhu kurzu. Připravil jsem tři šablony pro vaši vlastní aplikaci.

Není třeba vůbec nic instalovat a konfigurovat. Psaní aplikace probíhá v online editoru.

Obsah kurzu (jednotlivá videa):
1. Představení kurzu
2. monaca, založení projektu
3. monaca debugger
4. monaca, sestavení aplikace
5. Framework7, ukázka funkcí
6. Framework7, ukázka aplikací
7. monaca a Framework7, import projektu
8. monaca a Framework7, úprav projektu
9. monaca a Framework7, import projektu (2)
10. monaca a Framework7, sestavení aplikace (.apk)
11. ukončení kurzu

Výsledkem bude soubor .apk, který se nainstaluje do telefonu či tabletu. Stačí povolit instalaci z neznámých zdrojů v menu telefonu.

Vlastní mobilní aplikace

sobota 6. května 2017

Připravuji videokurz: Vlastní mobilní aplikace - I

Právě pracuji na videokurzu Vlastní mobilní aplikace - I.

Cílem je ukázat jednoduchý a praktický způsob, jak si se základní znalostí HTML (a případně i CSS) vytvořit vlastní mobilní aplikaci pro Android.

V kurzu (ještě není hotový) ukážu na praktickém příkladu, jak si vytvořit jednoduchou mobilní aplikaci, která zobrazí předem připravený obsah - tím můžou být nadpisy, odstavce textu, obrázky, atd.

Mám připraveny tři šablony (se stejným obsahem), které můžete použít a upravit si je podle svého. Vytvářenou aplikaci lze testovat v mobilním telefonu a po jejím odladění si ji můžete vytvořit jako soubor s příponou .apk a nainstalovat ji do telefonu či tabletu.

Jednotlivé šablony: 11A-F7-blank, 12A-F7-pages a 13A-F7-tabs vypadají takhle:




pondělí 1. května 2017

Pracuji na aplikaci: Todo list - seznam úkolů

V těchto dnech pracuji na malé aplikaci Todo list (seznam úkolů). Přešel jsem z kombinace Ionic/Angular na Framework7/VueJS.

Aplikace je funkční. Ukládá data automaticky do telefonu (úložiště localstorage). Vypadá takhle:



Není to celé moje práce, vyšel jsem z této ukázky aplikace https://jsfiddle.net/Nikoniko/sa0u4791/11/
kterou jsem upravil.

Co aplikace umí?

1. Vytvořit nový úkol. Všechny úkoly se uloží do telefonu (localstorage). Tlačítko plus vpravo nahoře.
2. Přepínat mezi zobrazením úkolů (list), editací (edit) a mazáním (del). Tlačítko vlevo nahoře.
3. Přepínat mezi zobrazením od novějšího ke staršímu a naopak. Tlačítko šipka vlevo nahoře.
4. Upravit libovolný úkol.
5. Smazat libovolný úkol (ať už je hotový nebo ne).
6. Označit/odznačit úkol jako hotový.
7. Zobrazuje počet hotových úkolů a celkový počet.

Co bych rád dodělal:

1. Rád bych vyřešil (nevím jak...) situaci, kdy se zobrazí dialog pro zadání nového úkolu a zobrazí se klávesnice - dialog se posune nahoru, i když není klávesnicí překrytý a není to nutné.
2. Podporu více jazyků a přepínání mezi nimi.
3. Nastavení: barvy, výchozí řazení úkolů, ...

Stažení aplikace:

Máte-li zájem o funkční verzi (je nutné v telefonu povolit "instalování z neznámých zdrojů), najdete ji tady.



středa 15. února 2017

Videokurz: Základy VueJS 2.x

Dnes byl publikován můj videokurz Základy VueJS

Obsah kurzu
1. Příprava, instalace Google Chrome a NetBeans. (01:17)
2. Založení projektu v NetBeans. (02:38)
3. Přidání VueJS do projektu, úvodní nastavení VueJS. (04:48)
4. Provázání mezi HTML a JS, vypsání obsahu proměnné. (04:32)
5. Data a funkce (1), práce s proměnnými a funkcemi. Praktický příklad - jednoduchá kalkulačka. Volání funkce po stisku tlačítka. (10:07)
6. Data a funkce (2), práce s proměnnými a funkcemi. Podmíněný příkaz, podmínka. (05:18)
7. Automatické funkce, automaticky vypočítané proměnné. (07:05)
8. Podmíněné zobrazení části HTML při splnění podmínky. (04:51)
9. Úprava struktury, umístění souborů v projektu. (06:05)
10. Kaskádové styly CSS, vizuální vzhled aplikace. (06:15)
11. Cyklus (1), vypsání více odstavců za sebou. (04:43)
12. Cyklus (2), vypsání dat z JS do HTML pomocí cyklu. (05:03)
13. Cyklus (3), vypsání dat (objektů) z JS do HTML pomocí cyklu, práce s objektem. (09:17)
14. Změna hodnoty atributu v HTML, zakázání tlačítka na základě podmínky, nastavení CSS třídy podle podmínky. (04:54)
15. Seznam osob (zadání projektu). Zadání vlastní samostatné práce - aplikace pro seznam osob. (08:09)
16. Seznam osob (HTML kód) - ukázka řešení HTML kódu. (07:59)
17. Seznam osob (HTML kód) - ukázka řešení VueJS kódu. (08:01)


Úvodní video

Online videokurz najdete na naucmese.cz


neděle 12. února 2017

Připravuji videokurz: Základy VueJS

Pracuji na videokurzu, ve kterém se naučíte základy VueJS. Je to populární JS framework vhodný pro psaní webových a mobilních aplikací. 

VueJS je mnohem jednodušší než AngularJS, přesto je stejně mocný. Náplní kurzu bude praktické zvládnutí VueJS tak, abyste mohli samostatně naprogramovat jednoduchou aplikaci. Důraz je na praktickou část, vše si vysvětlíme a názorně ukážeme.

Je vhodné mít základní znalosti HTML, CSS a JS (není to podmínkou, ale hodí se). Dále potřebujeme vývojové prostředí (např. NetBeans) a prohlížeč Google Chrome.

Znalost základů VueJS otevírá cestu k vlastním webovým a mobilním aplikacím!

=== Videokurz je již publikován ===
https://www.naucmese.cz/kurz/video-zaklady-vuejs-2-x






neděle 5. února 2017

Parsování dat z webu, praktický návod: cena benzínu

Parsování dat

Parsování dat je (v tomto konkrétním případě) proces získání informací z webové stránky. Získaná data pak můžeme použít např. ve webové nebo mobilní aplikaci, ale i jinak - fantazii se meze nekladou.

Google Spreadsheet (Google Sheet, tabulka Google)

Co má tabulka Google (obdoba Exelu) společného s parsováním dat z webu? Je to zdarma dostupná možnost; stačí mít účet u společnosti Google (např. email ve tvaru [jmeno]@gmail.com) a máme automaticky dostupné i online dokumenty. Využijeme šikovnou funkci ImportHTML.

Zdroj dat

Nejprve potřebujeme webovou stránku s požadovanými daty. Pro tento příklad jsem zvolil stránku s cenami benzínu a nafty.

Praktická ukázka

Nebudu zde popisovat celý postup, lepší bude vidět to celé "naživo". Publikoval jsem video, které vše krok za krokem vysvětluje.

sobota 4. února 2017

VueJS 2: píšeme komponentu - zobrazení matematického výrazu (Katex/Latex)

Pomocí komponent si můžeme definovat vlastní HTML tagy a použít je na webové stránce. Na tomto blogu již vyšlo: VueJS 2: komponenty, VueJS 2: píšeme komponentu - zobrazení věku, VueJS 2: píšeme komponentu - schématická značka (SVG grafika)

Katex

Pro psaní matematických symbolů, rovnic, ... byl vyvinut nástroj Latex. Jeho modifikace od Khan Academy je Katex.

Zadání

Vytvoříme komponentu, která zobrazí matematický výraz (vzorec, rovnici, ...) pomocí nástroje Katex. 

Řešení

Poznámka: jde o ukázku, nebude se provádět kontrola vstupních údajů (hodnoty atributů).

Komponenta bude mít název katex a bude obsahovat jeden atribut expr (expression). Zobrazí zadaný matematický výraz v konvencích Katexu/Latexu do webové stránky.

Deklarace komponenty

Vue.component("katex", {
  replace: true,
  props: {
    expr: {
      type: String,
      default: ""
    }
  },
  data: function(){
  },
  computed: {
    _expr: function(){
      try {
        return katex.renderToString(this.expr, {throwOnError: false});  
      } catch (err) {
        return "" 
      }
    }
  },
  template: '<span v-html="_expr"></span>'
});

Komponenta obsahuje jednu vlastnost a to expr, do které vložíme požadovaný matematický výraz. V části template se zobrazí obsah jako HTML kód vygenerovaný pomocí katex.renderToString(), který se generuje v části computed.

Použití v HTML

Komponentu lze použít např. takhle:
<p>
 expression directly: <span v-katex="{expr: 'x_{1}=\\frac{1}{2} \\cdot a^2'}"></span>
</p>

Výsledek

Jak vypadá výsledek se můžete podívat tady (pokud chcete provést úpravy, nejprve prosím klepněte vpravo nahoře na fork, dostanete tak vlastní kopii).

sobota 21. ledna 2017

VueJS 2: píšeme komponentu - schématická značka (SVG grafika)

O komponentách ve VueJS již na tomto blogu vyšlo: VueJS 2: komponenty a VueJS 2: píšeme komponentu - zobrazení věku

Vlastní komponenta pomocí VueJS

Zadání

Vytvoříme komponentu, která zobrazí schématickou značku rezistoru. Použijeme přitom SVG grafiku.

Řešení

Poznámka: jde o ukázku, nebude se provádět kontrola vstupních údajů (hodnoty atributů).

Komponenty se bude jmenovat svg-resistor (anglický název), bude mít atributy: x (x-ová souřadnice), y (y-ová souřadnice), rotate (úhel natočení), color (barva).
Na webové stránce se použije tímto způsobem (ovšem uvitř elementu <svg>!): 
<svg-resistor x="120" y="120" :rotate="-45" ></svg-resistor>

Každý z atributů x, y, rotate, color má svou výchozí hodnotu; nebude-li zadán (jako v tomto případě, kdy chybí color), bude použita výchozí hodnota.

Deklarace komponenty

Vlastnosti (properties) komponenty jsou v části props, u každé je uveden datový typ a výchozí hodnota.
V části computed (vypočítané nebo vyhodnocené hodnoty) se skládá textový řetězec, jehož výsledek může vypadat např.: translate(100, 80), rotate(-90)a slouží k posunu (translate) a otočení (rotate) komponenty při jejím vykreslení uvnitř elementu SVG.
Část template definuje vizuální podobu komponenty, tj. to, co VueJS vloží do webové stránky namísto komponenty <svg-resistor></svg-resistor>

Vue.component("svg-resistor", {
  props: {
    x: {
      type: Number,
      default: 0
    },
    y: {
      type: Number,
      default: 0
    },
    rotate: {
      type: Number,
      default: 0
    },
    color: {
      type: String,
      default: "black"
    }
  },
  computed: {
    transform: function(){
      return "translate(" + this.x + ", " + this.y + "), " + "rotate(" + this.rotate + ")";
    }
  },
  template: '<path :transform="transform" d="M 0, 0 h 10 v -7.5 h 30 v 15 h -30 v -7.5 M 40, 0 h 10 "  :stroke="color" fill="none" />'
});

Použití v HTML

<svg width="302" height="302">
  <svg-resistor x="120" y="120" :rotate="-45" ></svg-resistor>
  <svg-resistor x="30" y="80" :rotate="0" ></svg-resistor>
</svg>

Výsledek

Jak vypadá výsledek se můžete podívat tady (pokud chcete provést úpravy, nejprve prosím klepněte vpravo nahoře na fork, dostanete tak vlastní kopii).



pondělí 2. ledna 2017

VueJS 2: píšeme komponentu - zobrazení věku

Vlastní komponenta pomocí VueJS

Zadání

Vytvoříme komponentu, která ze zadaného roku narození vypočítá a zobrazí věk.

Řešení

Poznámka: komponenta bude velmi jednoduchá, jde jen o ukázku; nebudou se kontrolovat vstupní data.

Komponenta se bude jmenovat age, s jedním atributem born (rok narození). Použije se na webové stránce tímto způsobem: <age born="2000"></age>
Výsledkem bude zobrazený věk.

1. krok

Vue.component("age", {
  template: "<span>{{age}}</span>",
});

Do HTML stránky se vykreslí obsah template, tj. <span>{{age}}</span>
Uvnitř spanu je ve dvojitých složených závorkách proměnná age (nemá nic společného s názvem komponenty!). Místo ní se vloží její hodnota, tj. vypočítaný věk.

2. krok, přidání atributu born

Vue.component("age", {
  template: "<span>{{age}}</span>",
  props: ["born"],
});

Přidali jsme do props atribut born, který použije naše komponenta. Tento atribut se chová jako proměnná, jejíž hodnotu zadáme. To nám umožní ji použít  stylem <age born="2000"></age>

3. krok, výpočet věku

Vue.component("age", {
  template: "<span>{{age}}</span>",
  props: ["born"],
  computed: {
    age: function(){
      var actYear = new Date().getFullYear();
      return actYear - this.born;
    }
  }
});

Přidali jsme do computed výpočet age; ve funkci se do lokální proměnné actYear uloží aktuální rok, funkce vrací návratovou hodnotu příkazem return (jako rozdíl mezi aktuálním rokem a rokem narození), která se vloží do proměnné age. Její hodnota (tj. vypočítaná hodnota) se zobrazí mezi dvěma spany. Pozor, atribut born musíme uvnitř funkce zapsat jako this.born

4. použití v HTML

<age born="1974"></age> <age born="2000"></age> <age born="2007"></age>

Výsledek

Jak vypadá výsledek se můžete podívat tady (pokud chcete provést úpravy, nejprve prosím klepněte vpravo nahoře na fork, dostanete tak vlastní kopii).




neděle 1. ledna 2017

VueJS 2: komponenty

Poslední dobou se prosazují webové komponenty (vysvětleno např. zde). Krátce řečeno, jsou to uživatelsky definované tagy pro HTML. Buď jen zobrazí určitý obsah nebo umí i reagovat na hodnoty atributů a/nebo na události.

Webové komponenty se dají skvěle psát i pomocí frameworku VueJS. Je k nim výborná, podrobná a srozumitelná dokumentace.

Vypůjčím si hotový příklad z dokumentace.
1. Registrace komponenty (definice)
Vue.component('my-component', {
template: '<div>A custom component!</div>'
})
Název nové komponenty (HTML tagu) je my-component, tag se tedy zapíše <my-component> (samozřejmě je to párový tag).
Template je HTML šablona, neboli to, co se zobrazí v prohlížeči v místě, kde se použije komponenta.

2. Vytvoření instance VueJS
// create a root instance
new Vue({
el: '#example'
})
3. Použití komponenty v HTML stránce
<div id="example">
<my-component></my-component>
</div>
4. Výsledný kód v prohlížeči (zobrazená HTML stránka)
<div id="example">
<div>A custom component!</div>
</div>
Na místě, kde je ve zdrojovém kódu zapsána komponenta <my-component></my-component> se zobrazí obsah šablony (to, co je definováno jako template).

Komponenty mohou mít i atributy, které mohou (nemusí) mít hodnoty. Také mohou reagovat na události.

Při psaní webových stránek a programování webových a hybridních mobilních aplikací se webové komponenty silně prosazují. Zpřehledňují kód a umožňují jednoduchým způsobem opakovaně použít již definovaný obsah a/nebo chování.