Introducción a Jamstack.
JavaScript, API y Markup stack
Con estos comentarios inicio una serie sobre el uso de eleventy, en base a las notas que fuí tomando al desarrollar varios sitios usando este SSG (generador de sitios estáticos), y al actualizar este.
- Introducción
En muchos casos en que debemos crear un sitio encontramos que todo o parte de su contenido es estático, es decir que siempre el servidor va a entregar las mismas páginas (aunque puede haber algunos cambios según el cliente), no necesitando acceso a bases de datos, ni procesamiento en el backend.
Por la experiencia obtenida en mi sitio personal, que nació como recopilación de material que preparo para mis alumnos, encuentro que al ir creciendo el mismo se dificulta su mantenimiento. Por ejemplo mantener un estilo uniforme, hay que revisar varias páginas al agregar o cambiar enlaces internos, o hacer algún cambio en la estructura de directorios, etc.
Aquí es donde puede resultar útil el uso de un SSG, sobre todo si el contenido abarca varias páginas, con agregados y modificaciones periódicas. Por ejemplo en la creación de blogs y similares, aunque no limitándose a ellos.
Nosotros creamos el contenido y la estructura y el SSG se encarga de las tareas rutinarias y deja el sitio listo para publicar en el servidor que elijamos (algunos como Netlify o Vercel ofrecen una mejor integración si utilizamos git).
En los últimos años se crearon muchos SSG, varios de los cuales se describen en jamstack.org.
Cada SSG usa varios lenguajes para cumplir con su tarea, unos de base y otros para los "templates", "layouts" y contenidos.
Al momento de escribir esta página (abril de 2022) están listados en Jamstack.org 333 generadores que usan 45 lenguajes distintos de base y algunos más para las plantillas, por lo que tenemos de donde elegir según lo que querramos desarrollar y los lenguajes/frameworks con los que nos sintamos más cómodos. Esto puede ser una ventaja o un problema al decidir cual usar (yo probé varios antes de elegir Eleventy).
Nota:
Existen varias formas de agregar contenido dinámico a un sitio que en principio es estático, por ejemplo utilizando algunas utilidades (incluyendo bases de datos) "serverless".
Hay varios artículos interesantes sobre este tema en CSS-tricks.