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.