Как да пишем микро-уебсайтове
Представете си, че трябва бързо да създадете малък уебсайт за предстоящо събитие на вашата фирма. Трябва да е просто, бързо и без излишни усложнения. Може би си мислите, че за такъв малък проект не ви е необходим стабилен framework. Но какво ще стане, ако използването на Nette framework може значително да опрости и ускори този процес?
Все пак, дори при създаването на прости уебсайтове, не искате да се отказвате от удобството. Не искате да измисляте това, което вече е решено. Бъдете спокойно мързеливи и се оставете да ви глезят. Nette Framework може отлично да се използва и като micro framework.
Как може да изглежда такъв микросайт? Например така, че целият код на
уебсайта да се постави в един файл index.php
в публичната папка:
<?php
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
// създаване на DI контейнер въз основа на конфигурацията в config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();
// настройване на маршрутизацията
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);
// маршрут за URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
// откриване на езика на браузъра и пренасочване към URL /en или /de и т.н.
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
$presenter->redirectUrl("/$lang");
});
// маршрут за URL https://example.com/cs или https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
// показване на съответния шаблон, например ../templates/en.latte
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
return $template;
});
// стартиране на приложението!
$container->getByType(Nette\Application\Application::class)->run();
Всичко останало ще бъдат шаблони, съхранени в родителската папка
/templates
.
PHP кодът в index.php
първо подготвя
средата, след това дефинира маршрутите и
накрая стартира приложението. Предимството е, че вторият параметър на
функцията addRoute()
може да бъде callable, който се изпълнява след
отваряне на съответната страница.
Защо да използвате Nette за микросайт?
- Програмистите, които някога са опитвали Tracy, днес не могат да си представят да програмират нещо без нея.
- Преди всичко обаче ще използвате системата за шаблони Latte, защото още от 2 страници ще искате да имате отделен лейаут и съдържание.
- И определено искате да разчитате на автоматично екраниране, за да не възникне уязвимост XSS
- Nette също така гарантира, че при грешка никога няма да се покажат програмни съобщения за грешки на PHP, а разбираема за потребителя страница.
- Ако искате да получавате обратна връзка от потребителите, например под формата на контактна форма, тогава ще добавите и форми и база данни.
- Попълнените формуляри можете лесно да изпращате по имейл.
- Понякога може да ви е полезно кеширането, например ако изтегляте и показвате фийдове.
В днешно време, когато скоростта и ефективността са ключови, е важно да имате инструменти, които ви позволяват да постигнете резултати без излишно забавяне. Nette framework ви предлага точно това – бърза разработка, сигурност и широк набор от инструменти, като Tracy и Latte, които опростяват процеса. Достатъчно е да инсталирате няколко Nette пакета и изграждането на такъв микросайт изведнъж става напълно лесно. И знаете, че никъде не се крие никаква дупка в сигурността.