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