Michal added Used technologies.tex  about 9 years ago

Commit id: fb418a3eda886f9835bd7f96e0f07041ededd7ec

deletions | additions      

         

\section{Použité technologie}  \subsection{ MEAN Stack}  Mean stack je soubor technologií (MongoDB, Express, AngularJS, Node.js), založených na JavaScriptu, které se používají k tvorbě webových aplikací. Umožňujě tvořit servery i klienty. Klient komunikuje se serverem pomocí rest api. Mezi hlavní přednosti patří rychlost, jednoduchost a testovatelnost.  \subsubsection{AngularJS}  Angular je MVC framework pro tvorbu webových aplikací. Výrazně usnadňuje práci a také podporuje vysokou modularitu a testovatelnost. Vzhled prezentační vrstvy můžeme ovládat pomocí direktiv. Direktivy určují, jak bude zacházeno s modelem. Zapisujeme je jako atributy HTML značek. Pokud máme například model items a chceme položky vypsat do seznamu, použijeme direktivu ng-repeat.
  • {{item}}
Angular umožňuje i tvorbu uživatelských direktiv, což zjednodušuje znovupoužitelnost kódu. Další výhodou angularu je two-way data binding. Two-way data binding zajišťuje synchronizaci modelu a prezentační vrstvy. Změna modelu se tedy okamžitě projeví na obrazovce. Angular za nás také řeší závislosti mezi jednotlivými komponentami pomocí dependenci injection.
  \subsubsection{Node.JS}  Node je prostředí, umožňující běh JavaScriptu mimo webový prohlížeč, využívané zejména pro běh back-end serverů pro webové aplikace. Node běží vždy jen v jednom vlákně, souběžnost zajišťuje architektura řízená událostmi. Pokud vlákno provede nějaký požadavek (například dotaz do databáze), vlákno se nezablokuje, ale může vykonávat něco jiného. Pokud příde odpověď na náš požadavek, vyvolá se událost a provede se kód, který na událost reaguje. Například získání uživatele z databáze provedeme takto: User.FindById(id, function(user) {//provede se po získání uživatele z databáze})  \subsubsection{Express}  Express je NPM balíček (viz 2.2) pro tvorbu webových serverů v node.js, zkracující a zpřehledňující kód.  \subsubsection{MongoDB}  MongoDb je dokumentově orientovaná databáze. Jedná se o NoSQL databázi. Data se ukládají do dokumentů, které jsou tříděny do kolekcí. Filozofie spočívá v tom, že data, která spolu souvicí, jsou uložena v jednom dokumentu a měla by odpovídat požadovaným dotazům na databázi. Při dotazu na databázi tedy obvykle vracíme jen jeden dokument, což je mnohem snažší a rychlejší, než v klasických SQL databázích.  \subsection{NPM}  NPM je balíčkový manažer pro node.js a další technologie. Umožňuje jednoduše stahovat přídavné moduly pro naší aplikaci. Modul naistalujeme příkazem npm install nazev_modulu. Závislosti na modulech můžeme zapsat do souboru package.json a poté naistalovat najednou příkazem npm install. V mojí aplikaci jsem použil tyto moduly: * bcrypt - obsahuje hash funkci, používanou k šifrování hesel * body-parser - umožňuje automaticky číst JSON v POST dotazu. * jwt-simple - umožňuje vytvářet JWT (JSON Web Token), používaný pro autentizaci uživatele * mongoose - usnadňuje přístup do databáze  \subsection{Bower}  Bower je balíčkový manažer pro frontend aplikace. Funguje podobně jako NPM. Pro instalaci modulo použijeme příkaz bower install nazev_modulu. Závislosti můžeme ukládat do souboru bower.json. V mojí aplikaci jsem použil tyto moduly: * angular-route - umožňuje měnit obsah stránky na základě URL * semantic-ui - css framework, pro tvorbu uživatelského rozhraní * jquery - potřeba pro funkčnost některých komponent semantic-ui  Bower balíčky lze stahovat i pomocí NMP. Bower jsem použil kvůli oddělení závislostí pro backend a frontend.  \subsection{Gulp}  Gulp je nástroj pro automatizaci sestavovacího procesu. Umožňuje spojovat kód z více souborů do jednoho, minifikaci JavaScriptu, automatický rebuild při změně sledovaného souboru atd.