Hogyan írjunk mikrooldalakat

Képzelje el, hogy gyorsan létre kell hoznia egy kis weboldalt a cégének egy közelgő eseményéhez. Egyszerűnek, gyorsnak és felesleges bonyodalmak nélkülinek kell lennie. Azt gondolhatod, hogy egy ilyen kis projekt nem igényel robusztus keretrendszert. De mi van akkor, ha a Nette keretrendszer használatával jelentősen leegyszerűsítheti és felgyorsíthatja ezt a folyamatot?

Még egyszerű weboldalak készítésekor sem szeretne lemondani a kényelemről. Nem akarja újra feltalálni a kereket. Legyen nyugodtan lusta és kényeztesse magát. A Nette keretrendszer mikro keretrendszerként is kiválóan használható.

Hogyan nézhet ki egy ilyen mikrooldal? Például a weboldal teljes kódja egyetlen index.php fájlba helyezhető a nyilvános mappában:

<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// létrehoz egy DI konténert a config.neon konfiguráció alapján
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// útválasztás beállítása
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// útvonal az URL https://example.com/ URL-hez
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// a böngésző nyelvének felismerése és átirányítás az URL /en vagy /de stb. címre.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// útvonal az URL-hez https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// a megfelelő sablon megjelenítése, például ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// futtassuk az alkalmazást!
$container->getByType(Nette\Application\Application::class)->run();

Minden más a /templates szülőmappában tárolt sablonok lesznek.

A index.php oldalon található PHP-kód először beállítja a környezetet, majd definiálja az útvonalakat, végül pedig futtatja az alkalmazást. Ennek előnye, hogy a addRoute() függvény második paramétere lehet egy hívható, amely a megfelelő oldal megnyitásakor végrehajtódik.

Miért használja a Nette-et a mikrooldalakhoz?

  • Azok a fejlesztők, akik valaha is kipróbálták a Tracy-t, ma már el sem tudják képzelni a kódolást nélküle.
  • De mindenekelőtt a Latte templating rendszert fogja kihasználni, mert mindössze 2 oldalról akarja szétválasztani az elrendezést és a tartalmat.
  • És mindenképpen az automatikus escapingre akarsz támaszkodni az XSS sebezhetőségek elkerülése érdekében.
  • A Nette gondoskodik arról is, hogy hiba esetén soha ne jelenjenek meg PHP hibaüzenetek, hanem egy felhasználóbarát oldal jelenjen meg.
  • Ha visszajelzést szeretne kapni a felhasználóktól, például kapcsolatfelvételi űrlap formájában, akkor űrlapokat és adatbázist is hozzáadhat.
  • A kitöltött űrlapokat is könnyen elküldheti e-mailben.
  • Néha hasznos lehet a gyorsítótárazás, például a feedek letöltésekor és megjelenítésekor.

A mai korban, amikor a gyorsaság és a hatékonyság kulcsfontosságú, fontos, hogy olyan eszközökkel rendelkezzen, amelyekkel felesleges késedelmek nélkül érhet el eredményeket. A Nette keretrendszer pontosan ezt kínálja: gyors fejlesztést, biztonságot és olyan eszközök széles skáláját, mint a Tracy és a Latte, amelyek leegyszerűsítik a folyamatot. Csak telepítsen néhány Nette csomagot, és egy ilyen microsite építése gyerekjátékká válik. És tudja, hogy nincsenek rejtett biztonsági hibák.