Cómo escribir micro-sitios web

Imagina que necesitas crear rápidamente un pequeño sitio web para el próximo evento de tu empresa. Tiene que ser simple, rápido y sin complicaciones innecesarias. Quizás pienses que para un proyecto tan pequeño no necesitas un framework robusto. Pero, ¿y si usar el framework Nette puede simplificar y acelerar fundamentalmente este proceso?

Incluso al crear sitios web simples, no quieres renunciar a la comodidad. No quieres inventar lo que ya ha sido resuelto una vez. Siéntete libre de ser perezoso y déjate mimar. Nette Framework también se puede utilizar perfectamente como un micro framework.

¿Cómo puede verse un micrositio así? Por ejemplo, colocando todo el código del sitio web en un único archivo index.php en la carpeta pública:

<?php

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

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

// crear contenedor DI basado en la configuración en config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

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

// ruta para la URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// detectar el idioma del navegador y redirigir a la URL /en o /de, etc.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// ruta para la URL https://example.com/cs o https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// mostrar la plantilla correspondiente, por ejemplo ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// ¡ejecutar la aplicación!
$container->getByType(Nette\Application\Application::class)->run();

Todo lo demás serán plantillas almacenadas en la carpeta padre /templates.

El código PHP en index.php primero prepara el entorno, luego define las rutas y finalmente ejecuta la aplicación. La ventaja es que el segundo parámetro de la función addRoute() puede ser un callable que se ejecuta después de abrir la página correspondiente.

¿Por qué usar Nette para un micrositio?

  • Los programadores que alguna vez han probado Tracy hoy no pueden imaginar programar nada sin ella.
  • Pero sobre todo, utilizarás el sistema de plantillas Latte, porque a partir de 2 páginas querrás tener separados el layout y el contenido.
  • Y definitivamente quieres confiar en el escape automático para evitar la vulnerabilidad XSS.
  • Nette también asegura que en caso de error, nunca se muestren mensajes de error de PHP para programadores, sino una página comprensible para el usuario.
  • Si quieres obtener retroalimentación de los usuarios, por ejemplo, en forma de formulario de contacto, entonces también añadirás formularios y base de datos.
  • También puedes hacer que los formularios completados se envíen fácilmente por correo electrónico.
  • A veces te puede resultar útil el caching, por ejemplo, si descargas y muestras feeds.

En la actualidad, donde la velocidad y la eficiencia son clave, es importante tener herramientas que te permitan lograr resultados sin demoras innecesarias. Nette framework te ofrece precisamente eso: desarrollo rápido, seguridad y una amplia gama de herramientas, como Tracy y Latte, que simplifican el proceso. Simplemente instala algunos paquetes de Nette y construir un micrositio así se convierte de repente en un juego de niños. Y sabes que no hay ninguna brecha de seguridad oculta en ninguna parte.