Как писать микросайты

Представьте себе, что вам нужно быстро создать небольшой сайт для предстоящего мероприятия вашей компании. Он должен быть простым, быстрым и без лишних сложностей. Вы можете подумать, что для такого небольшого проекта не нужен надежный фреймворк. Но что если использование фреймворка 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 nebo 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() может быть вызываемая переменная, которая выполняется при открытии соответствующей страницы.

Почему стоит использовать Nette для микросайтов?

  • Разработчики, которые когда-либо пробовали Tracy, сегодня не могут представить себе кодирование без нее.
  • Но прежде всего вам пригодится система шаблонов Latte, поскольку всего с 2 страниц вы захотите разделить верстку и контент.
  • А для предотвращения XSS-уязвимостей вам обязательно понадобится автоматическое экранирование.
  • Nette также гарантирует, что в случае ошибки никогда не будут выводиться сообщения об ошибках PHP, а вместо них будет отображаться удобная для пользователя страница.
  • Если вы хотите получать обратную связь от пользователей, например, в виде контактной формы, вы также можете добавить формы и базу данных.
  • Кроме того, заполненные формы можно легко отправить по электронной почте.
  • Иногда может пригодиться кэширование, например, при загрузке и отображении лент.

В наше время, когда скорость и эффективность являются ключевыми факторами, важно иметь инструменты, позволяющие достигать результатов без лишних задержек. Фреймворк Nette предлагает именно такие инструменты – быструю разработку, безопасность и широкий набор средств, таких как Tracy и Latte, которые упрощают процесс. Достаточно установить несколько пакетов Nette, и создание такого микросайта превращается в легкое дело. При этом вы будете уверены, что в системе безопасности нет никаких скрытых недостатков.