Jak psát mikro-weby
Představte si, že potřebujete rychle vytvořit malý web pro nadcházející akci vaší firmy. Má to být jednoduché, rychlé a bez zbytečných komplikací. Možná si myslíte, že pro tak malý projekt nepotřebujete robustní framework. Ale co když použití Nette frameworku může tento proces zásadně zjednodušit a zrychlit?
Přece i při tvorbě jednoduchých webů se nechcete vzdát pohodlí. Nechcete vymýšlet to, co už bylo jednou vyřešené. Buďte klidně líný a nechte se rozmazlovat. Nette Framework lze skvěle využít i jako micro framework.
Jak takový microsite může vypadat? Například tak, že celý kód webu umístíme do jediného souboru
index.php
ve veřejné složce:
<?php
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
// vytvoř DI kontejner na základě konfigurace v config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();
// nastavíme routing
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);
// routa pro URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
// detekujeme jazyk prohlížeče a přesměrujeme na URL /en nebo /de atd.
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
$presenter->redirectUrl("/$lang");
});
// routa pro URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
// zobrazíme příslušnou šablonu, například ../templates/en.latte
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
return $template;
});
// spusť aplikaci!
$container->getByType(Nette\Application\Application::class)->run();
Vše ostatní budou šablony uložené v nadřazené složce /templates
.
PHP kód v index.php
nejprve připraví prostředí, poté
definuje routy a nakonec spustí
aplikaci. Výhodou je, že druhý parametr funkce addRoute()
může být callable, který se po otevření
odpovídající stránky vykoná.
Proč používat Nette pro microsite?
- Programátoři, kteří někdy vyzkoušeli Tracy, si dnes neumí představit, že by něco programovali bez ní.
- Především ale využijete šablonovací systém Latte, protože už od 2 stránek budete chtít mít oddělený layout a obsah.
- A rozhodně se chcete spolehout na automatické escapování, aby nevznikla zranitelnost XSS
- Nette taky zajistí, že se při chybě nikdy neobrazí programátorské chybové hlášky PHP, ale uživateli srozumitelná stránka.
- Pokud chcete získávat zpětnou vazbu od uživatelů, například v podobě kontaktního formuláře, tak ještě přidáte formuláře a databázi.
- Vyplněné formuláře si taktéž můžete nechat snadno odesílat emailem.
- Někdy se vám může hodit kešování, například pokud stahujete a zobrazujete feedy.
V dnešní době, kdy je rychlost a efektivita klíčová, je důležité mít nástroje, které vám umožní dosáhnout výsledků bez zbytečného zdržování. Nette framework vám nabízí právě to – rychlý vývoj, bezpečnost a širokou škálu nástrojů, jako je Tracy a Latte, které zjednodušují proces. Stačí nainstalovat pár Nette balíčků a vybudovat takovou microsite je najednou úplná hračka. A víte, že se nikde neskrývá žádná bezpečnostní díra.