Как писать микро-сайты
Представьте, что вам нужно быстро создать небольшой сайт для предстоящего мероприятия вашей компании. Он должен быть простым, быстрым и без лишних сложностей. Возможно, вы думаете, что для такого маленького проекта вам не нужен надежный фреймворк. Но что, если использование фреймворка Nette может существенно упростить и ускорить этот процесс?
Ведь даже при создании простых сайтов вы не хотите отказываться от удобства. Вы не хотите изобретать то, что уже было решено. Будьте спокойно ленивы и позвольте себя побаловать. 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);
$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, а пользователю понятная страница.
- Если вы хотите получать обратную связь от пользователей, например, в виде контактной формы, то вы еще добавите формы и базу данных.
- Заполненные формы вы также можете легко отправлять по email.
- Иногда вам может пригодиться кеширование, например, если вы скачиваете и отображаете фиды.
В наше время, когда скорость и эффективность являются ключевыми, важно иметь инструменты, которые позволят вам достигать результатов без лишних задержек. Фреймворк Nette предлагает именно это – быструю разработку, безопасность и широкий спектр инструментов, таких как Tracy и Latte, которые упрощают процесс. Достаточно установить несколько пакетов Nette, и создание такого микросайта становится совершенно простым делом. И вы знаете, что нигде не скрывается никакой дыры в безопасности.