Saltar al contenido principal

Como migré de PHP a Vuepress 2 (Parte II)

Jose CerrejonAlrededor de 2 minDevOps

Como migré de PHP a Vuepress 2 (Parte II)

Alt
Generated by OpenAI's DALL-E and modified later.

Esta es la segunda parte de la serie de artículos sobre cómo ha sido la experiencia de migrar un blog hecho en PHP + MySQL, a uno estático usando Vuepress 2. Leeréis de la vieja estructura de código y la tecnología utilizada. ¡Acompáñame!


¿Por qué Vuepress?

Vue logo
Vue logo

Vue es un framework para la creación de interfaces de usuarios. A diferencia de otros frameworks monolíticos, Vue está diseñado desde cero para ser gradualmente adoptable. La core central se centra solo en la capa de la vista, y es fácil de integrar con otras bibliotecas y/o proyectos existentes.

VuePress es un sitio estático minimalista Vue-powered generado por Evan You, el creador de Vue.js. Fue construido para dar soporte a las necesidades de documentación de proyectos hecho con Vue. Por defecto, el tema generado viene optimizado para la documentación técnica. A día de hoy, es mantenido por la comunidad. Una pena porque la actividad no es muy viva en su desarrollo.

Debo confesar que elegí Vitepress en primer lugar, pero tuve que cambiar porque no encontré una manera fácil de paginar un blog. Es mantenido por el equipo de Vue y también es perfectamente capaz de alimentar SPA.

Estoy seguro que has visitado alguna que otra documentación hecha con una de estas tecnologías. Hay miles de sitios que utilizan Vuepress y Vitepress para crear documentación y blogs entre otros.

Realmente Vuepress 2 no es la mejor opción para un blog si no eres un experto, porque no puedes encontrar demasiada ayuda en la comunidad. Quizás me equivoque, pero esa es mi sensación. De todas formas, yo tuve suficiente con la documentación del theme que uso.

La web en PHP

Old site structure
Old site structure

Una de las cosas que me gusta del sitio antiguo es que lo desarrollé desde cero en cinco días. La versión con Vuepress me llevó alrededor de 2 semanas, incluso cuando utilicé un theme increíble con todas las características que necesitaba. La estructura del antiguo sitio es simple como se puede ver en la imagen de arriba. La tecnología utilizada fue:

  • Frontend: HTML, CSS, JavaScript, jQuery, Bootstrap 4, raintpl3open in new window como PHP template engine, y Google Fonts.
  • Backend: PHP 5.5 y luego la adapté a 7.2.
  • Database: MySQL 5.x.

Echemos un vistazo a los include del archivo index.php:

<?php
  $interval_post = (isset($_REQUEST["n"]) && is_numeric($_REQUEST["n"]))? abs($_REQUEST["n"]):"0";
  $max_post_per_page=6;
  $page = "index.php";
  include_once("rain/inc/rain.tpl.class.php");
  $tpl = new RainTPL('tpl');
  include_once('includes/config.php');
  include_once('includes/common.php');
  include_once('includes/mysql.php');
  include_once('includes/markdown.php');
  ...

Creo que es fácil de entender. Déjame explicarte:

  • rain.tpl.class.php es la clase principal del motor de plantillas.
  • config.php contiene la configuración del sitio para soporte en varios idiomas y elementos de configuración de navegación (Sobre mí, noticias).
  • common.php contiene una función para manejar el corte de los mensajes para la página principal y algunas asignaciones de variables para el engine tpl.
  • mysql.php contiene la clase MySql para consultar y conectarse a la base de datos. Tiene las credenciales para conectarse a la base de datos (¡Qué vergüenza! 🤦‍♂️).
  • markdown.php contiene la función para analizar los archivos markdown creados por Michel Fortin llamado php-markdownopen in new window.

Después de todo lo que incluye, el código continúa conectándose a MySQL, haciendo que los artículos se muestren en la página principal, y finalmente, el motor de plantillas hace el resto con echo $tpl->draw('res_template');, donde res_template es un archivo .html con código PHP dentro de llaves {}. El engine rain.tpl era muy simple y fácil de usar, y una buena opción para proyectos pequeños, pero ahora está obsoleto. Aquí tienes un ejemplo del archivo res_template.html:

some code inside res_template.html
Some code inside res_template.html

Aquí concluyo la segunda parte de esta serie. En la siguiente, hablaré sobre el proceso de construcción del blog usando Vuepress 2. Así que si estás interesado... ¡Sigue leyendo mi blog! 😃