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

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