NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 1 - Úvod do frameworku Simplex.js

Vítejte v rychlokurzu javascriptového frameworku Simplex.js, učení tohoto frameworku totiž ani jinak než rychle nejde :) A přeci využívá těch nejmodernějších jazykových konstrukcí, které přinesl standard ECMAScript 6, je plně objektově orientovaný a sníží náklady na vývoj vašeho webového projektu na minimum. Framework byl navržen a je vyvíjen ITnetwork.cz, kde obstarává veškerou front-end funkcionalitu. Myslíte, že se jedná o "další nejlepší JS framework"? V dnešní lekci si vysvětlíme v čem je jiný a proč vašemu projektu ušetří spoustu peněz, bez ohledu na to jak je velký.

Tento kurz předpokládá znalost alespoň základů JavaScriptu a základů objektově orientovaného programování v JS.

Proč framework?

V HTML a CSS chybí spousta důležitých komponent, které na webech denně potřebujeme. Jsou to různé slidery, našeptávače, grafy, záložky - již jen slavná hláška o cookies Evropské Unie, která musí být prakticky na každé webové stránce, vyžaduje JavaScript.

JavaScript jako takový ale tyto sic naprosto základní komponenty neobsahuje, pouze je umožňuje vytvořit. Dává tedy smysl využít nějaký framework, který komponenty rovnou přinese hotové nebo výrazně usnadní jejich tvorbu. Nikdo nechceme vynalézat znovu kolo.

Proč ne jQuery, Angular, React...?

V minulosti se hojně používala knihovna jQuery, která se proslavila implementací CSS selektorů do JavaScriptu (od toho query). Ovšem po příchodu metody querySelector() přímo do JS standardu v roce 2013 a s příchodem nové syntaxe a možností objektově orientovaného programování do JS v roce 2015 začala být velmi zastaralá.

Robustnější řešení jako jsou populární frameworky Angular nebo React ovšem také nemusí být pro běžné webové stránky ideální. Když opomineme jejich komplexnost (Angular) nebo naopak nutnost kombinovat je pomalu s deseti dalšími neustále se měnícími technologiemi (React), je největší problém, že vyžadují specializované programátory. A již jen programátorů, kteří umí alespoň čistý JS, je zoufale málo a velké společnosti vám je ještě přeplácejí. Pokud máte malý projekt (start up) v robustním frameworku, může vám brzy začít téci do bot, až váš programátor přestane stíhat.

Naopak Simplex.js je tak jednoduchý, že se jej i průměrný programátor naučí používat za jedno odpoledne. A velké projekty? I pro ty je Simplex.js ideální řešení, kódu mají totiž hodně a určitě nechceme, aby závisel na zběsile vyvíjených velkých JS frameworcích (např. přechod z Angular 1 na Angular 2 tenkrát oslabil mnoho projektů, protože se framework úplně změnil a bylo je nutné kompletně přepsat).

Situaci, kdy firma závisí na neustále se měnících javascriptových frameworcích, krásně znázornil komik na následujícím videu (zapněte si Titulky):

... ano, můžete použít Redux, je to úplně v pořádku. Ale pokud se pro něj rozhodnete, doporučil bych vám použít Redux Toolkit. Ale ve skutečnosti je lepší použít Flux nebo Flummox nebo Fluxible. Vlastně je lepší použít Recoil, teda ne, že bychom to dělali. Ale teď React přišel s hooky a kontextovým API, které je zřejmě lepší než Redux, zřejmě, takže vše zas přepíšeme znovu...

Simplex.js

Framework Simplex.js - Simplex.js - Rychlokurz microframeworku

Simplex.js je tzv. microframework. To znamená, že využívá minimalistická řešení, zakládá si na krátkém zdrojovém kódu a využívání nejmodernějších vychytávek, které byly do webových standardů přidány za poslední roky. Simplex.js se nesnaží přinést "nejvíce cool trendy řešení", ale maximálně stavět na funkcionalitě moderních webových standardů, které jsou trvanlivé, neměnné, a poskytují stále více a více funkcí. Díky tomu může i s minimem kódu soupeřit s robustními korporátními frameworky, které byly vytvořené v době, kdy spousta funkcionality ve standardech ještě neexistovala, nebo byla raději implementována znovu, aby např. získala elegantnější syntaxi.

Komponentová architektura

Veškerá funkcionalitu je v Simplexu obsažená v komponentách a rovnou se počítá s tím, že jedna komponenta může být na jedné stránce několikrát (např. dva slidery na titulní stránce). Komponenty se automaticky vygenerují na základě připravené HTML šablony a jsou od sebe navzájem odstíněné. Simplex některé věci záměrně neumožňuje, např. přistupovat k HTML kódu stránky mimo danou komponentu, čímž zabraňuje špatnému návrhu typickému pro globální jQuery selektory, kdy ve složitější aplikaci již programátor ani nevěděl, která část stránky je čím upravována.

Moderní návrh

Velkým neduhem jQuery byly např. funkce ve funkcích, které byly zas ve funkcích. V Simplex.js máme lambda funkce v metodách tříd. Struktura kódu je tak samopopisující. Další výhodou je dodržování kontextu klíčového slova this v obsluze událostí a zároveň možnost vytáhnout si snadno zdrojový nebo cílový element události přes parametr. Jednotlivé komponenty, reprezentované třídami, od sebe mohou dědit (např. Carousel dědí z TabControl).

Šablony a bindingy

Po vzoru třívrstvých frameworků (jako je např. Angular), Simplex umožňuje jednoduše bindovat proměnné objektů přímo na elementy nebo formulářová pole. To šetří čas a snižuje riziko zanesení chyby do kódu. Tato funkčnost je zatím experimentální.

Začínáme

Abychom mohli používat náš framework, musíme si jej nejdříve stáhnout. Soubor s kompletním frameworkem bude dostupný v posledním dílu tohoto rychlokurzu. Obsah archivu rozbalíme do složky, ve které jej chceme začít používat, např na plochu:

Adresář frameworku Simplex - Simplex.js - Rychlokurz microframeworku

Vysvětlení obsahu podsložek:

  • Controls/ - složka obsahuje jednotlivé komponenty,
  • Framework/ - složka obsahuje samotný framework,
  • photos/ - složka s obrázky pro ukázku použití (index.html),
  • Styles/ - složka obsahuje CSS soubory.

Ukázka použití

V kořenové složce najdeme jednoduchou html stránku s názvem index.html. Je zde ukázáno použití komponent Carousel a TabControl:

Ukázka komponent Carousel a TabControl z frameworku Simplex.js - Simplex.js - Rychlokurz microframeworku

Pojďme se podívat jak vše funguje. Otevřete si zdrojový kód stránky. Na konci stránky před ukončujícím elementem </html> najdeme mimo jiné následující kód:

<script src="Framework/Sjs.js"></script>
<script src="Framework/SimplexSelection.js"></script>
<script src="Framework/SimplexControl.js"></script>

Vysvětlení kódu:

  • Framework/Sjs.js - třída starající se o automatické načítání a registraci komponent,
  • Framework/SimplexControl.js - rodičovská třída pro všechny komponenty,
  • Framework/SimplexSelection.js - třída pro výběr elementů.

Dále zde vidíme registrování jednotlivých komponent, čímž se na stránce zpracují, pokud zde jsou vložené:

<script>
    Sjs.initialize();
    Sjs.register('TabControl');
    Sjs.register('Carousel');
</script>

O inicializaci třídy objektu Sjs se stará volání metody initialize(). Následně se provede registrace komponenty, kterou chceme na stránce využívat, konkrétně zavoláním metody register(). Komponentami rozumíme takové "prvky", které nám poskytuje obsah složky Controls, tedy např. TabControl, Carousel apod.

V tuto chvíli jsme si vysvětlili klíčové kroky pro použití frameworku, vysvětlili jsme si obsah složek a připojení JS souborů včetně inicializace a registrace komponent.

Příště, v lekci Popis vestavěných komponent Simplex.js, si ukážeme jak pracujeme s komponentami na příkladu hojně využívané komponenty Carousel. Následně si popíšeme i další vestavěné komponenty frameworku.


 

Všechny články v sekci
Simplex.js - Rychlokurz microframeworku
Přeskočit článek
(nedoporučujeme)
Popis vestavěných komponent Simplex.js
Článek pro vás napsal Petr Kozler
Avatar
Uživatelské hodnocení:
7 hlasů
Autor se aktuálně věnuje především programování v PHP (a vývoji webových aplikací obecně) nebo v Pythonu, ojediněle pak v C nebo v Javě...
Aktivity