Как писать микросайты
*********************
Представьте, что вам нужно быстро сделать небольшой сайт к предстоящему мероприятию вашей компании. Он должен быть простым, быстрым и без лишних усложнений. Вы можете подумать, что для такого маленького проекта мощный фреймворк не нужен. Но что, если использование Nette Framework на самом деле упростит и ускорит этот процесс?
Даже создавая простые сайты, вы не хотите жертвовать удобством. Вы не хотите заново изобретать то, что уже решено. Спокойно ленитесь и позвольте себя побаловать. Nette Framework отлично подходит и для использования в роли микрофреймворка.
Как может выглядеть такой микросайт? Например, весь код сайта может уместиться в один файл `index.php` в публичном каталоге:
```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` сначала [настраивает окружение |bootstrap:], затем задаёт [маршруты |application:routing#Динамическая маршрутизация с callback-функциями] и наконец запускает приложение. Преимущество в том, что вторым параметром функции `addRoute()` может быть callable, который выполняется при обращении к соответствующей странице.
Зачем использовать Nette для микросайтов?
-----------------------------------------
- Программисты, попробовавшие [Tracy|tracy:], сегодня едва ли представляют себе разработку без неё.
- Прежде всего вам пригодится система шаблонов [Latte|latte:], потому что даже при двух страницах вам захочется разделить [макет и содержимое|latte:template-inheritance].
- И вы наверняка захотите положиться на [автоматическое экранирование |latte:safety-first], чтобы предотвратить XSS-уязвимости.
- Nette также следит за тем, чтобы при ошибке никогда не отображались сырые сообщения об ошибках PHP: вместо них показывается дружелюбная страница.
- Если вы хотите собирать отзывы пользователей, скажем через форму обратной связи, вы легко добавите поддержку [форм|forms:] и [базы данных|database:].
- Заполненные формы можно легко [отправлять по электронной почте|mail:].
- Иногда может пригодиться [кеширование|caching:], например при загрузке и выводе лент.
В сегодняшнем быстром мире, где скорость и эффективность решают, жизненно важно иметь инструменты, позволяющие получать результат без лишних задержек. Nette Framework предлагает именно это - быструю разработку, безопасность и широкий набор инструментов вроде Tracy и Latte, которые упрощают процесс. Достаточно установить несколько пакетов Nette, и создание такого микросайта становится невероятно простым. И вы можете быть уверены, что скрытых уязвимостей в нём нет.
Как писать микросайты
Представьте, что вам нужно быстро сделать небольшой сайт к
предстоящему мероприятию вашей компании. Он должен быть простым,
быстрым и без лишних усложнений. Вы можете подумать, что для такого
маленького проекта мощный фреймворк не нужен. Но что, если
использование 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, и
создание такого микросайта становится невероятно простым. И вы можете
быть уверены, что скрытых уязвимостей в нём нет.