Hogyan írjunk mikro-weboldalakat
Képzelje el, hogy gyorsan létre kell hoznia egy kis weboldalt a cége közelgő eseményére. Egyszerűnek, gyorsnak és felesleges bonyodalmaktól mentesnek kell lennie. Talán úgy gondolja, hogy egy ilyen kis projekthez nincs szüksége egy robusztus keretrendszerre. De mi van, ha a Nette keretrendszer használata alapvetően leegyszerűsítheti és felgyorsíthatja ezt a folyamatot?
Hiszen még egyszerű weboldalak készítésekor sem akar lemondani a kényelemről. Nem akarja újra feltalálni azt, amit már egyszer megoldottak. Legyen nyugodtan lusta, és hagyja magát kényeztetni. A Nette Framework kiválóan használható mikro keretrendszerként is.
Hogyan nézhet ki egy ilyen microsite? Például úgy, hogy a weboldal teljes kódját egyetlen index.php
fájlba
helyezzük a nyilvános mappában:
<?php
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
// hozzon létre DI konténert a config.neon konfiguráció alapján
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();
// beállítjuk a routingot
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);
// route a https://example.com/ URL-hez
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
// érzékeljük a böngésző nyelvét és átirányítunk az /en vagy /de stb. URL-re
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
$presenter->redirectUrl("/$lang");
});
// route a https://example.com/cs vagy https://example.com/en URL-hez
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
// megjelenítjük a megfelelő sablont, például ../templates/en.latte
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
return $template;
});
// indítsa el az alkalmazást!
$container->getByType(Nette\Application\Application::class)->run();
Minden más sablon lesz, amelyek a szülő /templates
mappában vannak tárolva.
Az index.php
PHP kódja először előkészíti a környezetet,
majd definiálja a route-okat, és
végül elindítja az alkalmazást. Az előnye, hogy a addRoute()
függvény második paramétere lehet egy callable,
amely a megfelelő oldal megnyitása után végrehajtódik.
Miért használjunk Nette-t microsite-hoz?
- Azok a programozók, akik valaha kipróbálták a Tracy-t, ma már el sem tudják képzelni, hogy nélküle programozzanak valamit.
- Mindenekelőtt azonban a Latte sablonrendszert fogja használni, mert már 2 oldaltól kezdve külön szeretné választani az elrendezést és a tartalmat.
- És határozottan szeretne támaszkodni az automatikus escapelésre, hogy ne keletkezzen XSS sebezhetőség.
- A Nette azt is biztosítja, hogy hiba esetén soha ne jelenjenek meg a programozói PHP hibaüzenetek, hanem egy felhasználóbarát oldal.
- Ha visszajelzést szeretne kapni a felhasználóktól, például egy kapcsolatfelvételi űrlap formájában, akkor még hozzáadja az űrlapokat és az adatbázist.
- A kitöltött űrlapokat szintén könnyedén elküldheti e-mailben.
- Néha hasznos lehet a gyorsítótárazás, például ha feedeket tölt le és jelenít meg.
Napjainkban, amikor a sebesség és a hatékonyság kulcsfontosságú, fontos, hogy olyan eszközök álljanak rendelkezésre, amelyek lehetővé teszik az eredmények elérését felesleges késedelem nélkül. A Nette keretrendszer pontosan ezt kínálja – gyors fejlesztést, biztonságot és széles körű eszközöket, mint például a Tracy és a Latte, amelyek egyszerűsítik a folyamatot. Elég telepíteni néhány Nette csomagot, és egy ilyen microsite létrehozása hirtelen gyerekjáték. És tudja, hogy sehol sem rejtőzik biztonsági rés.