Curso de Eleventy SSG

Aprende a crear sitios estáticos rápidos y seguros con el SSG Eleventy (11ty)
En marcha
Intermedio
47 Clases 12 h (aprox.)
85€
69€
Precio en promoción
En el mundo de Internet existen muchas tecnologías, frameworks y CMS para crear sitios y aplicaciones web. Cada una de ellas ofrece ventajas e inconvenientes, así como los distintos proyectos que se adaptan mejor a un stack particular u otro.

Una de las vertientes que ha tomado mucha fuerza en los últimos años es la creación de sitios estáticos, mediante un SSG, por sus capacidades de optimización, facilidad de mantenimiento y además ofrecer los niveles de seguridad más elevados.

Quizás te extrañe oír hablar de "sitios estáticos" y te evoque la época en la que se  trabajaba solamente con HTML y CSS. Quizás pienses que todo eso está muy pasado de moda, ya que actualmente existen numerosas tecnologías para conseguir comportamientos dinámicos. Si es así merece la pena explicar qué es un SSG.

Qué es un SSG:

Un SSG (Static Site Generator), es un sistema que permite desarrollar sitios web con todas las ventajas de otros lenguajes como PHP, como acceso a bases de datos, sistemas de templates, uso intensivo de Javascript para los dinamismos, etc. Solo que, en lugar de renderizarse cada página cada vez que un cliente la solicita, como ocurre en PHP, las páginas se construyen en el proceso de llevar a producción el sitio. De este modo, todos los archivos del proyecto quedan volcados en HTML plano, con su CSS y Javascript.

Este estilo de trabajo ofrece muchas ventajas. Principalmente se pueden destacar:

La velocidad, ya que no se tiene que generar el contenido HTML cuando se visita una página. En lugar de ello está ya listo en el servidor y producido para ser entregado. Por tanto, al no tener que procesar PHP, acceder a las fuentes de datos y todo eso, el servidor es capaz de responder instantáneamente.
La seguridad, ya que los archivos HTML, CSS y Javascript planos no tienen opción de corromperse ni el servidor ejecuta lenguajes o programas donde posibles atacantes sean capaces de explotar vulnerabilidades.

En otras palabras, al producir tu web en archivos estáticos, cualquier espacio de hosting básico podrá enviar los archivos. No tendrás que preocuparte por dependencias en el servidor, ni actualizar el CMS, ni los lenguajes de programación, librerías, etc. Pero todavía hay más, ya que el uso de SSG encaja perfectamente con la disciplina de DevOps. De este modo, realizar la producción de los archivos en el momento de despliegue, implementando procesos de CI/CD, resulta tan fácil como un juego de niños.

Qué es Eleventy:

Eleventy (abreviado como 11ty) es uno de los muchos Static Site Generators que nos ofrece el mercado. Pero tiene una particularidad: es mucho más simple y rápido que la mayoría. Además es flexible porque lo puedes usar de muchos modos y versátil, porque no te ata a un stack de tecnologías en concreto.

Eleventy es competidor de otros proyectos como NextJS o Nuxt, sin embargo resulta mucho más sencillo de usar y no deja al desarrollador restringido a un framework o librería de componentes determinada, por lo que lo puedes usar con Vue, React, VanillaJS, Lit o cualquier otro. Por supuesto, también soporta trabajar con cualquier framework CSS como Tailwind, Bootstrap o similares.

Debido a su sencillez y versatilidad numerosas empresas usan Eleventy en sus proyectos, como la Nasa, Google, Microsoft, Mozilla, Apache, Ubuntu, Red Hat, Greenpeace, CSS Tricks, Stack Overflow, Netlify y un largo etc. En fin, estás ante una herramienta usada entre los proyectos más relevantes de Internet y no por ello se trata de un framework complejo y pesado, como comprobarás en este Curso del SSG Eleventy.

Qué aprenderé en el Curso de Eleventy SSG

  • Desarrollar sitios web con un SSG usado por las principales organizaciones
  • Aprender a configurar Eleventy según nuestras necesidades
  • Compilar Javascript y CSS usando Vite
  • Trabajar con Layouts para construir un sitio de manera sencilla y consistente
  • Integrar librerías de componentes de UI
  • Llevar a producción en Netlify con un proceso automático CI/CD
  • Aprender a desarrollar menús dinámicos que se construyen al llevar a producción el sitio

Objetivos del curso

El curso de Eleventy explica todos los detalles para aprender a trabajar con el SSG 11ty de una manera sencilla y guiada por la práctica. El estudiante verá paso a paso cómo construir un sitio estático de modo incremental, agregando poco a poco más y más complejidad hasta tener un proyecto sofisticado, capaz de usar layouts, herramientas frontend para compilado de assets como el Javascript o el CSS (con Vite), usar fuentes de datos e incluso llevar a producción usando herramientas de integración y despliegue continuo.

Por qué debes aprender Eleventy SSG

El desarrollo con SSG ofrece numerosas ventajas en el día a día, incorporando herramientas avanzadas para construir los sitios, ofreciendo una alta optimización de los proyectos y la máxima seguridad.

Eleventy es un framework SSG realmente asequible y que consigue adaptarse a la mayor cantidad de stacks de desarrollo. No te casa con una tecnología en concreto, sino que se abre a cualquier herramienta o framework CSS y Javascript que prefieras utilizar. Es por ello que es el SSG de cabecera para proyectos de las empresas y organizaciones más importantes.

En este curso podrás aprender a trabajar con Eleventy, adquiriendo habilidades que te permitirán disponer de una nueva manera de desarrollar los proyectos en la web, más cómoda y segura, aprovechando todos los conocimientos que ya tienes en el mundo frontend.

Qué tengo que saber

Para hacer este curso es importante tener una idea básica sobre desarrollo de sitios web, especialmente de los lenguajes básicos de la web como HTML y CSS.

Además usaremos herramientas frontend como Vite y el lenguaje Javascript, con la plataforma NodeJS. Sin embargo, no es un curso que requiera conocer en profundidad estas tecnologías, ya que se irán usando sobre la marcha y explicando cómo debes incorporarlas en el proyecto.

Clases y contenidos

Introducción a Eleventy

Comenzamos el curso de Eleventy SSG con unas clases que permitirán conocer el modelo de desarrollo de sitios estáticos, sus características y los tipos de proyectos que son más adecuados para llevar a cabo con un SSG. Además daremos un recorrido por el ecosistema de Eleventy y sus starter kits.

Introducción a los Static Site Generators y Eleventy Gratis

En este vídeo vamos a explicar a qué nos referimos cuando mencionamos "sitio estático" en el contexto de Eleventy. Qué es un Static Site Generator, conocido también por las siglas SSG, cuáles son sus características y las diferencias con otros modelos tradicionales como el desarrollo con lenguajes como PHP, Python o sistemas de gestión de contenido como WordPress. También veremos qué nos ofrece Eleventy y por qué es una alternativa ideal para el desarrollo de proyectos web.

Introducción a los SSG, Jamstack y a Eleventy Gratis

En esta clase vamos a ver qué es un Static Site Generator, cuáles son sus ventajas y por qué son una solución óptima para muchos tipos de proyectos. Además explicaremos qué es Jamstack y por qué se ha hecho tan popular en los últimos años. Por último comenzaremos a trabajar en un sitio con Eleventy y veremos lo sencillo que es comenzar a desarrollar nuestro sitio con este SSG.

Cómo crecer en Eleventy sin complicaciones

En este bloque vamos a aprender cómo se añaden piezas a nuestro proyecto en Eleventy sin complicarse. Veremos cómo integrar CSS y Javascript de una manera sencilla, con un layout básico. Con esto tendremos lo más básico del conocimiento de 11ty para desarrollar proyectos simples.

Requisitos para trabajar con Eleventy

Vamos a ver qué necesitas para trabajar con Eleventy, básicamente la plataforma de desarrollo para Javascript NodeJS y un terminal. Veremos cómo instalar NodeJS y cómo conseguir un terminal adecuado para los que están en Windows, ya que los que tienen MacOS y Linux ya disponen de un terminal bueno de casa.

Iniciar un proyecto con NodeJS

Como un primer paso para crear un proyecto con Eleventy necesitamos generar el package.json. Este paso es el mismo que hacemos para organizar un proyecto NodeJS e incluso la mayoría de los proyectos frontend actuales. Seguramente ya lo conozcas pero lo vamos a explicar sobre todo pensando en las personas con menos experiencia. De todos modos, también veremos algo importante que es asegurarnos de usar los ESModules en nuestro proyecto Node para facilitar el trabajo en el código de los módulos usando imports.

Crear un primer contenido con Eleventy

Vamos a aprender a generar contenido en Eleventy, por medio de archivos Markdown. Además veremos cómo hacer las dos operaciones básicas con el SSG: construir los archivos (lo que se haría en el paso de build del proyecto) y cómo arrancar el servidor de desarrollo para ver la página web que estamos creando con live-reload.

Crear scripts de npm

Como mejora de los flujos de trabajo vamos a explicar qué son los scripts de npm y veremos cómo crear scripts, una especie de shortcuts, para poder ejecutar más rápidamente los comandos de abrir el servidor de desarrollo y llevar a producción (start y build).

Primer layout en Eleventy

Veremos que los pasos anteriores nos generaron contenido HTML bastante "crudo". Lo normal es que ese contenido lo quieras meter en un marco, con una estructura de HTML completa, que incluyan además elementos como una barra de navegación, enlace a una hoja de estilos, etc. Para ello vamos a mostrar cómo trabajar con layouts, creando un primer layout básico que iremos mejorando a lo largo del curso de Eleventy. Veremos además qué es el front matter y cómo lo indicamos en los archivos markdown por medio de una sintaxis Yaml.

Aplicar CSS

En este vídeo vamos a ver los primeros pasos para configurar un proyecto Eleventy. Para ello vamos a hacer algo muy típico, que es añadir CSS a un proyecto Eleventy. Explicaremos cómo enlazar el CSS en el layout y cómo se consigue que ese CSS se lleve a producción, mediante un copiado de archivos, algo que tendremos que definir en el archivo de configuración.

Variables en el front matter

En el front matter de los archivos markdown, y de otros tipos de ficheros que podemos usar para especificar el contenido de las páginas en un proyecto Eleventy, podemos incluir muchos datos importantes. En este vídeo veremos cómo usar el front matter para poder añadir datos arbitrarios, con variables que podemos configurar de manera personalizada. Luego veremos cómo usar esos datos en los templates.

Definir contenido en el sitio usando HTML en lugar de markdown

En Eleventy podemos usar muchos tipos de archivos como fuente de contenido para las páginas. En este vídeo te explicamos cómo usar archivos HTML, que nos pueden venir bien cuando tenemos contenido con muchas personalizaciones y una estructura más detallada de la que podemos construir con un simple markdown.

Integrar Javascript en un proyecto

Vemos la manera más sencilla de integrar Javascript en un proyecto de sitio estático con Eleventy. Esta manera es suficiente para comportamientos clásicos de Javascript, nativos, que podrías requerir en los sitios web tradicionales donde quieras dinamismos limitados.

Integrar librerías sencillas mediante un CDN

También en proyectos sencillos de sitios web podemos integrar librerías a través de un CDN, lo que nos facilita la integración. Veremos el ejemplo con la integración de una librería clásica como es jQuery, que nos permite la manipulación del DOM sin tener que acudir a los métodos nativos, que son demasiado verbosos. Además en el vídeo veremos una práctica en la que implementamos una caja modal sencilla.

Cómo organizar un proyecto en 11ty

En este momento ya tenemos un conocimiento básico de Eleventy pero podemos mejorar bastante lo presente con nuevas prácticas que nos permitirán ser más organizados y llegar más lejos. Cambiaremos la estructura del proyecto, crearemos scripts npm, configuraremos Eleventy, trabajaremos con imágenes, etc.

Mejorar la organización de archivos y carpetas del proyecto Eleventy

A medida que vayamos incorporando archivos en el proyecto del sitio que estamos desarrollando con Eleventy verificaremos que empezamos a tener demasiadas cosas en la raíz del proyecto. Por tanto, antes de que nuestra estructura tienda al caos, vamos a pararnos un momento para organizar los archivos y carpetas del proyecto.

Añadir imágenes al sitio

Veremos cómo añadir imágenes al sitio, asegurando que se copien cuando el sitio se vaya a construir para producción.

Crear comandos npm

Vamos a ver cómo crear unos scripts de npm para que el sitio se pueda arrancar y producir de una manera más ágil.

Configuración de Eleventy

Vamos a estudiar de una manera más detallada el archivo de configuración de Eleventy. Explicaremos los distintos tipos de archivos que podemos usar para definir la configuración, el modelo de código que podemos necesitar con ESModules o CommonJS y haremos un repaso sobre la documentación para ver como se configuran algunas cosas habituales.

Colecciones en Eleventy

Ahora vamos a aprender a trabajar con las colecciones, que es una manera de estructurar el contenido que vamos a publicar en el sitio. Veremos cómo hacer colecciones, cómo configurarlas, como gestionar listados de colecciones y más.

Cómo generar contenido en páginas y colecciones

Vemos la distinción entre páginas y colecciones. Generamos nuestra primera colección dentro del sitio Eleventy.

Cómo realizar recorridos dinámicos en colecciones

Ahora vamos a ver cómo crear el index de una colección, donde mostremos un listado de los elementos o páginas que hay dentro de una colección. Este listado lo realizaremos de manera dinámica, usando el array que Eleventy genera con cada una de las colecciones que hayamos definido en el proyecto.

Cómo configurar colecciones de manera global con un JSON de datos

Si queremos podemos crear un archivo de datos en formato JSON en la carpeta de la colección donde podemos configurar de una manera global todos los archivos que forman parte de la colección. Además veremos cómo excluir ciertos archivos de la colección si es que lo necesitamos.

Configurar colecciones anidadas en Eleventy

En este vídeo vamos a ver que podemos crear unas colecciones dentro de otras colecciones. Esto nos puede ayudar organizar el contenido en nuevos niveles de profundidad. Veremos cómo poder gestionar los tags de distintas maneras en nuestros archivos, pudiendo heredar o sobreescribir configuraciones. Además veremos cómo hacer condicionales con el sistema de templates Liquid para conseguir que ciertos archivos de una colección no aparezcan en un listado.

Cómo filtrar y ordenar los listados en una colección

Veremos cómo crear nuevos datos arbitrarios en un front matter, de modo que podamos enriquecer los listados de los ítem de la colección. Luego veremos los criterios que se usan para ordenar los elementos de las colecciones y cómo podemos crear nuestros propios órdenes si lo necesitamos, a través de filtrado.

Acceso a todos los archivos de todas las colecciones

Eleventy también nos permite acceder a todos los elementos unificados, de todas las colecciones que tengamos en el proyecto. En este vídeo realizaremos varias prácticas de listados en las que seguiremos aprendiendo características como los filtros de Liquid, órdenes, límite de elementos en el listado, etc.

Trabajo con Vite en Eleventy

Vamos a aprender a trabajar con una herramienta frontend avanzada como es Vite, de modo que podamos aplicar técnicas de desarrollo Javascript más avanzadas y frameworks de CSS. Además integraremos una biblioteca de componentes de UI.

Cómo usar librerías modernas gracias a Vite en Eleventy

La gracia de estar usando Vite en el proyecto Eleventy es que nos permite usar librerías modernas en el sitio estático generado, tales como React, Vue, Lit y cualquier otra. Para ello necesitamos importar los archivos de las librerías a través de los nombres de los packages de npm, algo que solo podremos hacer si Vite se encarga de procesar esos imports y crear los correspondientes bundles.

Cómo integrar Vite en un proyecto Eleventy

Cómo instalar el plugin oficial de Vite para Eleventy que nos permite usar esta herramienta frontend en el flujo de desarrollo de un proyecto con el SSG Eleventy. Cómo funciona el plugin y qué tenemos que hacer para que los archivos de Javascript y CSS se puedan compilar y minimizar para optimizar su tamaño.

Cómo usar librerías de componentes de terceros

Otro aspecto que nos permite el uso de Vite es la posibilidad de instalar librerías de componentes de terceros, con los que incorporar de una manera cómoda elementos de interfaz gráfica que mejoren la experiencia de usuario y las funcionalidades de los sitios generados. En este vídeo lo veremos con un ejemplo de uso de componentes de terceros para hacer un menú emergente.

Cómo compilar y optimizar el código CSS con Vite en Eleventy

Ahora le toca el turno al código CSS, que también gracias a Vite podemos compilar y optimizar. Esto nos permitirá no solo hacer que el CSS ocupe menos espacio sino también dividir el código en diferentes archivos, lo que facilitará el mantenimiento, haciendo que Vite agrupe todo el código en un mismo CSS optimizado.

Cómo usar Sass en un proyecto Eleventy

Dentro de las utilidades CSS tenemos los preprocesadores. En este vídeo veremos cómo usar el preprocesador CSS más popular, Sass en un proyecto Eleventy gracias al plugin de Vite.

Cómo usar Tailwind CSS en un proyecto Eleventy

Otra herramienta que se ha hecho muy popular en el trabajo con CSS es Tailwind. En este vídeo veremos cómo se integra Tailwind CSS en un proyecto Eleventy.

Orígenes de datos en Eleventy

Cómo acceder a datos para construir nuestras aplicaciones con Eleventy.

Definición de datos complejos en el frontmatter

El frontmatter, o front matter (a veces se escribe separado) permite escribir datos, como ya hemos visto en otros vídeos. En este vídeo vamos a ver cómo esos datos pueden ser complejos. Se definen con sintaxis Yaml. Una vez definidos los datos en el frontmatter los podemos acceder únicamente en la página donde están contenidos.

Datos globales en el directorio _data

Otro mecanismo más avanzado para definir datos en Eleventy y mucho más versátil es usar el directorio _data, que es el que está pensado específicamente para contener accesos a los orígenes de datos que necesites para generar las páginas estáticas del sitio. En este vídeo veremos cómo definir esos datos de manera literal por medio de archivos JSON. Gracias a este mecanismo conseguiremos datos que se podrán usar en cualquier página del sitio.

Cómo acceder a datos mediante Javascript en _data

La manera más potente de definir datos es mediante Javascript. Para ello usamos la misma carpeta _data pero en vez de usar simples JSON usaremos archivos Javascript. Esto nos permitirá componer cualquier acción programática para el acceso a los datos. Ejemplos relevantes serían acceder a bases de datos o consultar servicios web. En este vídeo mostraremos cómo realizar una consulta a un API externa que nos devolverá datos y como haremos para que esos datos estén disponibles en las páginas generadas.

Paginación de datos y colecciones en Eleventy

La paginación es esencial para poder mostrar datos y colecciones de una manera ordenada, sin acumular demasiados elementos en la misma página. Veremos cómo se organiza la paginación en Eleventy, paso por paso en distintos escenarios de dificultad creciente.

Fundamentos de la paginación en Eleventy

Realizar paginación en Eleventy es perfectamente posible gracias a las funcionalidades incorporadas en el SSG. Podemos paginar desde datos simples a colecciones de páginas. Para abordar la páginación comenzaremos por un ejemplo simple que nos permita entender los fundamentos para construirla.

Aplicar CSS para la navegación entre páginas

Vamos a hacer un paréntesis antes de seguir con paginación, para mostrar cómo podemos modificar el aspecto del típico navegador entre páginas, aplicando clases de utilidad de Tailwind CSS.

Mejoras que en el sistema de navegación entre páginas

Para que la experiencia de paginación sea un poco más avanzada vamos a ver cómo podemos hacer algunas mejoras en el navegador entre páginas, como poner enlace a la página siguiente anterior, cómo resaltar la página actual y otras cosas. Esto nos dará pie también a aprender a crear condicionales en los templates de Liquid.

Paginar colecciones de páginas

En este video veremos algo que realmente casi cualquier sitio va a necesitar, que es la paginación entre elementos de una colección. De este modo podemos tener la típica página de inicio en la que puedes mostrar únicamente unas páginas, como los últimos post de un blog, y luego tener otras páginas donde se muestre el archivo de páginas antiguas, en lotes de una longitud limitada, para facilitar la navegación o el SEO.

Cómo usar permalinks para cambiar las rutas de archivo de paginación

En este vídeo veremos cómo usar los permalinks para que las páginas donde se ve el archivo de paginación tengan rutas personalizadas. Así podremos configurar a nuestro gusto las rutas de las páginas.

Cómo crear páginas individuales con orígenes de datos

Ahora que ya conocemos paginación y hemos podido aprender a usar los permalinks podemos explicar el escenario más avanzado de uso de los orígenes de datos, que consiste en la creación de páginas individuales utilizando datos obtenidos mediante JavaScript. Para eso accederemos a los datos y haremos paginación de uno en uno, configurando el permalink donde se tiene que crear cada una de las páginas, según datos en crudo que hemos obtenido mediante un script de _data.

Personalización y adaptación de datos y templates

Vamos a hacer un bloque con temas diversos dedicados a Colecciones y filtros personalizados y templates parciales. Aparte de las colecciones que generamos mediante los tags, podemos en el archivo de configuración crear nuestras colecciones personalizadas. También lo podemos hacer con los filtros, para añadir funcionalidad a los propios filtros proporcionados por el sistema de templates. En este bloque también trabajaremos aprendiendo otras utilidades del sistema de templates Liquid, como son los templates parciales.

Crear colecciones personalizadas

Aparte de las colecciones definidas por los tags podemos crear nuestras propias colecciones dinámicas, generadas programáticamente en el momento de build del proyecto. Para ello usaremos el método addCollection() dentro de la configuración de Eleventy y la Collections API.

Crear filtros personalizados

El sistema de templates Liquid, el predeterminado de Eleventy viene con una buena cantidad de filtros. Veremos cómo usar otros filtros ya definidos y cómo crear nuestros propios filtros personalizados con el método addFilter() que podemos usar en el archivo de configuración de 11ty.

Partials de templates

A la hora de organizar nuestros templates es super importante echar mano de los partials, haciendo el include de bloques de marcado que podemos usar tanto para simplificar los layouts como para reutilizar código.

Paso de variables en partials de templates

Pasar variables entre los distintos partials es esencial para alcanzar un buen nivel de reutilización de los templates parciales. Veremos cómo se hace para aumentar la versatilidad de los subtemplates y las posibilidades de reutilización de código y su personalización.

Llevar a producción en Netlify

Explicaremos cómo podemos llevar un proyecto a producción en Netlify, un servicio gratuito de hosting de sitios estáticos (también se puede pagar si el proyecto es muy grande y tiene mucho tráfico). Netlify nos permitirá realizar de una manera extremadamente simple la configuración de un proceso de build con CI/CD y otras herramientas útiles para casos frecuentes como el envío de formularios.

Solucionar posibles problemas de construcción debidos a postprocesado de Vite

Antes de entrar en despliegue vamos a ver cómo solucionar posibles problemas de construcción del sitio estático cuando necesitamos copiar archivos en la raíz del proyecto, como el conocido archivo favicon.ico. Veremos que el post-procesado de Vite nos genera situaciones que pueden ser conflictivas con el copiado de archivos. Veremos cómo resolverlas.

Despliegue en Netlify

Vamos a mostrar cómo desplegar un sitio construido con Eleventy en el servicio gratuito de Netlify y cómo se consigue el despliegue continuo del sitio, de manera automática cada vez que enviamos cambios a GitHub.

Configurar un dominio personalizado y HTTPS

Ahora vamos a ver cómo configurar el proyecto en Netlify para que nuestro sitio se pueda servir mediante un dominio personalizado. Veremos además cómo proveer de un certificado de seguridad gratuito que nos permita que la página funcione mediante HTTPS.

Envío de formularios

Dentro de los servicios que ofrece Netlify orientados a sitios estáticos uno esencial es el envío de formularios. Veremos cómo construir un formulario de modo que se pueda recibir mediante Netlify, sin que el usuario necesite tener un cliente de correo en su equipo. Veremos cómo configurar avisos por correo electrónico cuando se reciban formularios y cómo configurar la página donde se redirige al usuario cuando se envía el formulario.

Cómo activar los filtros antispam

En este vídeo vamos a ver cómo con Netlify podemos configurar mecanismos antispam, para proteger los formularios. Esos mecanismos se pueden configurar de diversos modos. Explicaremos cómo activarlo con un honeypot pero nos centraremos en el sistema recaptcha, que es el más potente a la hora de evitar que los bots puedan rellenar nuestros formularios.

Próximos pasos

En este vídeo finalizamos el curso de Eleventy mencionando los próximos pasos y retos. En particular veremos cómo conseguir algo que quizás muchas personas hayan echado en falta, que es activar un CMS Headless, aconsejando un curso dentro de EscuelaIT para conseguirlo.

¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 200 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.

Suscríbete