Как писать микросайты
Представьте, что вам нужно быстро сделать небольшой сайт к предстоящему мероприятию вашей компании. Он должен быть простым, быстрым и без лишних усложнений. Вы можете подумать, что для такого маленького проекта мощный фреймворк не нужен. Но что, если использование Nette Framework на самом деле упростит и ускорит этот процесс?
Даже создавая простые сайты, вы не хотите жертвовать удобством. Вы не хотите заново изобретать то, что уже решено. Спокойно ленитесь и позвольте себя побаловать. Nette 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);
return $presenter->redirectUrl("/$lang");
});
// маршрут для URL https://example.com/cs или https://example.com/en
$router->addRoute('<lang cs|en|de>', 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, потому что даже при двух страницах вам захочется разделить макет и содержимое.
- И вы наверняка захотите положиться на автоматическое экранирование, чтобы предотвратить XSS-уязвимости.
- Nette также следит за тем, чтобы при ошибке никогда не отображались сырые сообщения об ошибках PHP: вместо них показывается дружелюбная страница.
- Если вы хотите собирать отзывы пользователей, скажем через форму обратной связи, вы легко добавите поддержку форм и базы данных.
- Заполненные формы можно легко отправлять по электронной почте.
- Иногда может пригодиться кеширование, например при загрузке и выводе лент.
В сегодняшнем быстром мире, где скорость и эффективность решают, жизненно важно иметь инструменты, позволяющие получать результат без лишних задержек. Nette Framework предлагает именно это – быструю разработку, безопасность и широкий набор инструментов вроде Tracy и Latte, которые упрощают процесс. Достаточно установить несколько пакетов Nette, и создание такого микросайта становится невероятно простым. И вы можете быть уверены, что скрытых уязвимостей в нём нет.