Як писати мікросайти

Уявіть, що вам потрібно швидко створити невеликий сайт для майбутньої події вашої компанії. Він повинен бути простим, швидким і без зайвих складнощів. Ви можете подумати, що такий невеликий проект не потребує надійного фреймворку. Але що, якщо використання фреймворку 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, і створення такого мікросайту стане легкою справою. І ви знаєте, що немає ніяких прихованих вразливостей у безпеці.