Kako pisati mikro-spletna mesta

Predstavljajte si, da morate hitro ustvariti majhno spletno mesto za prihajajoči dogodek vašega podjetja. Mora biti preprosto, hitro in brez nepotrebnih zapletov. Morda mislite, da za tako majhen projekt ne potrebujete robustnega ogrodja. Kaj pa, če lahko uporaba ogrodja Nette ta proces bistveno poenostavi in pospeši?

Saj se tudi pri ustvarjanju preprostih spletnih mest nočete odreči udobju. Nočete izumljati tistega, kar je bilo že enkrat rešeno. Bodite mirno leni in se pustite razvajati. Nette Framework lahko odlično uporabite tudi kot mikro ogrodje.

Kako lahko izgleda takšno mikro-spletno mesto? Na primer tako, da celotno kodo spletnega mesta postavimo v eno samo datoteko index.php v javni mapi:

<?php

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

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

// ustvari DI vsebnik na podlagi konfiguracije v config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// nastavimo usmerjanje (routing)
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// pot za URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// zaznamo jezik brskalnika in preusmerimo na URL /en ali /de itd.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// pot za URL https://example.com/cs ali https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// prikažemo ustrezno predlogo, na primer ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// zaženi aplikacijo!
$container->getByType(Nette\Application\Application::class)->run();

Vse ostalo bodo predloge, shranjene v nadrejeni mapi /templates.

PHP koda v index.php najprej pripravi okolje, nato definira poti (route) in na koncu zažene aplikacijo. Prednost je, da je lahko drugi parameter funkcije addRoute() callable, ki se izvede po odprtju ustrezne strani.

Zakaj uporabljati Nette za mikro-spletna mesta?

  • Programerji, ki so kdaj preizkusili Tracy, si danes ne predstavljajo, da bi kaj programirali brez nje.
  • Predvsem pa boste izkoristili sistem predlog Latte, saj boste že od 2 strani želeli imeti ločeno postavitev in vsebino.
  • In zagotovo se želite zanesti na samodejno ubežanje znakov, da ne nastane ranljivost XSS
  • Nette bo tudi zagotovil, da se ob napaki nikoli ne prikažejo programerska sporočila o napakah PHP, temveč uporabniku razumljiva stran.
  • Če želite pridobivati povratne informacije od uporabnikov, na primer v obliki kontaktnega obrazca, boste dodali še obrazce in podatkovno bazo.
  • Izpolnjene obrazce si lahko prav tako enostavno pošiljate po e-pošti.
  • Včasih vam lahko koristi predpomnjenje, na primer če prenašate in prikazujete vire (feeds).

V današnjem času, ko sta hitrost in učinkovitost ključnega pomena, je pomembno imeti orodja, ki vam omogočajo doseganje rezultatov brez nepotrebnega odlašanja. Ogrodje Nette vam ponuja prav to – hiter razvoj, varnost in široko paleto orodij, kot sta Tracy in Latte, ki poenostavljajo proces. Dovolj je namestiti nekaj Nette paketov in zgraditi takšno mikro-spletno mesto je naenkrat povsem enostavno. In veste, da se nikjer ne skriva nobena varnostna luknja.