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

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