Como escrever microsites

Imagine que você precise criar rapidamente um pequeno site para um evento futuro da sua empresa. Ele deve ser simples, rápido e sem complicações desnecessárias. Você pode pensar que um projeto tão pequeno não requer uma estrutura robusta. Mas e se o uso da estrutura Nette pudesse simplificar e acelerar significativamente esse processo?

Mesmo ao criar sites simples, você não quer abrir mão do conforto. Você não quer reinventar a roda. Sinta-se à vontade para ser preguiçoso e se mimar. O Nette Framework também pode ser usado de forma excelente como uma microestrutura.

Como seria esse microsite? Por exemplo, todo o código do site pode ser colocado em um único arquivo index.php na pasta pública:

<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// Crie um contêiner DI com base na configuração em config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// configurar o roteamento
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// rota para o URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// detectar o idioma do navegador e redirecionar para o URL /en ou /de etc.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// rota para o URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// exibir o modelo apropriado, por exemplo, ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// Execute o aplicativo!
$container->getByType(Nette\Application\Application::class)->run();

Todo o resto serão modelos armazenados na pasta principal /templates.

O código PHP em index.php primeiro configura o ambiente, depois define as rotas e, por fim, executa o aplicativo. A vantagem é que o segundo parâmetro da função addRoute() pode ser um chamável que é executado quando a página correspondente é aberta.

Por que usar o Nette para microsites?

  • Os desenvolvedores que já experimentaram o Tracy não conseguem imaginar a codificação sem ele hoje.
  • Mas, acima de tudo, você utilizará o sistema de modelos Latte, pois a partir de apenas duas páginas, você desejará separar o layout do conteúdo.
  • E, com certeza, você vai querer contar com o escape automático para evitar vulnerabilidades de XSS.
  • O Nette também garante que, em caso de erro, as mensagens de erro do PHP nunca serão exibidas, mas, em vez disso, será exibida uma página de fácil utilização.
  • Se quiser obter feedback dos usuários, por exemplo, na forma de um formulário de contato, também é possível adicionar formulários e banco de dados.
  • Os formulários preenchidos também podem ser facilmente enviados por e-mail.
  • Às vezes, o armazenamento em cache pode ser útil, por exemplo, ao baixar e exibir feeds.

Na era atual, em que velocidade e eficiência são fundamentais, é importante ter ferramentas que permitam obter resultados sem atrasos desnecessários. A estrutura Nette oferece exatamente isso: desenvolvimento rápido, segurança e uma ampla variedade de ferramentas, como Tracy e Latte, que simplificam o processo. Basta instalar alguns pacotes Nette e criar um microsite como esse se torna muito fácil. E você sabe que não há falhas de segurança ocultas.