Jak tworzyć mikro-strony
Wyobraź sobie, że potrzebujesz szybko stworzyć małą stronę internetową na nadchodzące wydarzenie Twojej firmy. Ma być prosta, szybka i bez zbędnych komplikacji. Możesz pomyśleć, że do tak małego projektu nie potrzebujesz solidnego frameworka. Ale co jeśli użycie frameworka Nette może ten proces zasadniczo uprościć i przyspieszyć?
Przecież nawet przy tworzeniu prostych stron internetowych nie chcesz rezygnować z wygody. Nie chcesz wymyślać tego, co już zostało raz rozwiązane. Bądź spokojnie leniwy i pozwól się rozpieszczać. Nette Framework można świetnie wykorzystać również jako micro framework.
Jak taka mikrostroń może wyglądać? Na przykład tak, że cały kod strony umieścimy w jednym pliku index.php
w folderze publicznym:
<?php
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
// utwórz kontener DI na podstawie konfiguracji w config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();
// ustawiamy routing
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);
// trasa dla URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
// wykrywamy język przeglądarki i przekierowujemy na URL /en lub /de itd.
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
$presenter->redirectUrl("/$lang");
});
// trasa dla URL https://example.com/cs lub https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
// wyświetlamy odpowiedni szablon, na przykład ../templates/en.latte
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
return $template;
});
// uruchom aplikację!
$container->getByType(Nette\Application\Application::class)->run();
Wszystko pozostałe to szablony zapisane w nadrzędnym folderze /templates
.
Kod PHP w index.php
najpierw przygotowuje środowisko, następnie
definiuje trasy i na końcu
uruchamia aplikację. Zaletą jest to, że drugi parametr funkcji addRoute()
może być callable, który zostanie
wykonany po otwarciu odpowiedniej strony.
Dlaczego używać Nette do mikrostroń?
- Programiści, którzy kiedykolwiek wypróbowali Tracy, dziś nie wyobrażają sobie, że mogliby coś programować bez niej.
- Przede wszystkim jednak wykorzystasz system szablonów Latte, ponieważ już od 2 stron będziesz chciał mieć oddzielony layout i treść.
- I zdecydowanie chcesz polegać na automatycznym escapowaniu, aby nie powstała podatność XSS
- Nette również zapewni, że w przypadku błędu nigdy nie pojawią się programistyczne komunikaty błędów PHP, ale zrozumiała dla użytkownika strona.
- Jeśli chcesz zbierać informacje zwrotne od użytkowników, na przykład w postaci formularza kontaktowego, to jeszcze dodasz formularze i bazę danych.
- Wypełnione formularze możesz również łatwo wysyłać e-mailem.
- Czasami może przydać się keszowanie, na przykład jeśli pobierasz i wyświetlasz feedy.
W dzisiejszych czasach, gdy szybkość i efektywność są kluczowe, ważne jest posiadanie narzędzi, które pozwolą Ci osiągnąć wyniki bez zbędnego opóźnienia. Framework Nette oferuje właśnie to – szybki rozwój, bezpieczeństwo i szeroką gamę narzędzi, takich jak Tracy i Latte, które upraszczają proces. Wystarczy zainstalować kilka pakietów Nette, a zbudowanie takiej mikrostroń staje się nagle dziecinnie proste. I wiesz, że nigdzie nie kryje się żadna dziura bezpieczeństwa.