Express 4

31. hodina DVOP WBB


Matěj Cajthaml — SSPŠ

©

Opakování

Co jsou to middlewares? Jak fungují?
Jak můžeme middlewarům přidat parametry?
Co je to AJAX?
Co je to router?
K čemu slouží app.use?

Rozložení aplikace

Rozložení aplikace

  • aplikaci je nutné rozdělit na menší (logické) části
  • často rozdělujeme routery, které můžeme na sebe propojovat
  • soubory s routery poté rozdělujeme na jednotlivé endpointy
/
├── src/
│   └── controllers/
│       ├── user/
│       │   ├── endpoints/
│       │   │   ├── getOne.js
│       │   │   ├── getAll.js
│       │   │   ├── updateOne.js
│       │   │   └── getFriendsForOne.js
│       │   └── user.js
│       └── grades/
│           └── ...
└── main.js

Jaké jsou nevýhody a výhody tohoto systému? Jak ho zlepšit?

Jak budeme tvořit další logické části — např. pomocné funkce, databázové entity, servisy a další věci?

Ukázka!

Vrstvení aplikace

Teorie vrstvení

  • moderní API nejsou jen o tom, že mají reagovat na určité endpointy
  • často se jedná o pokročilé procesy, které zařizují věci na jiných zdrojích
  • při návrhu aplikace je nutné přemýšlet o vrstvení

Vrstvení

  • způsob rozdělit aplikaci na jednotlivé vrstvy — layers
  • často se zaměnují za tiers — které reprezuntují fyzický stav
  • vrstva má vždy za úkol jednu část, kterou zpracovává, např:
    • přijmutí dat a jejich validace
    • získáni či úprava dat z databáze
    • zpracování požadavku
  • každá vrstva získává data z nižší vrstvy — nelze to naopak

Toto vrstvení používáme proto, aby nenastalo to, co děláme: endpointy řeší vše

Kolik vstvev by měla mít aplikace?

Často se používají různé modifikace, například to, že můžeme komunikovat s jakoukoliv vrstvou a nebo třeba vrstvy přeskakovat. Proč?

Základní třívrstvá architektura

  • prezentační vrstva (presentation layer)
  • aplikační vrstva (business layer)
  • datová vrstva (data access layer)

Často se používá tzv. model-view-controller (MVC) či model-view-presenter (MVP). Jak se liší oproti třívstvému návrhu?

Vrsty, MVC či MVP nelze zaměňovat se službami — services. Jak se liší?

Microservices

  • moderní návrh aplikací
  • jedna aplikace se rozdělí do více menších aplikací
  • prezentační vrstva poté komunikuje s jednotlivými aplikacemi
  • např.: přihlašování, nahrávání videa, komentování
  • jaké jsou výhody a nevýhody?

Template engines

Template engine

  • knihovna, která má za úkol vykreslovat různé šablony
  • často pro HTML — generujeme stránky
  • požadavek ⇉ vykreslení ⇉ prohlížeč
  • v expressu předáváme proměnné, které šablony modifikují

pug

  • nejznámější template engine
  • instalace: npm install pug
  • aktivujeme: app.set('view engine', 'pug')
  • šablony — views — tvoříme ve složce views

Express

View

Další enginy

Práce

Nalezněte další template engines, které express podporuje. Podívejte, jak se definují jejich views.

Vstup od uživatele

Můžeme věřit vstupu od uživatele? Proč?

Validace dat

  • spousta možností validace
  • nejznámější: joi

Nahrávání souborů

Děkuji za pozornost!

  • matej.cajthaml@ssps.cz
  • https://ssps.cajthaml.eu/