Frontend
Gatsby
Descripción general
Gatsby es un framework moderno basado en react para la construcción de sitios web de alto rendimiento. Combina características de SPA, SSG y capacidades de SSR híbrido, permitiendo generar sitios estáticos optimizados mientras conserva flexibilidad para contenido dinámico. Su arquitectura está centrada en un sistema de data layer unificado mediante GraphQL, lo que simplifica la integración con APIs, archivos locales, servicios externos o un CMS headless.
Características principales
- Enfoque estático por defecto (SSG)
- Generación anticipada de páginas a partir de contenido estructurado.
- Beneficios: carga rápida, SEO alto, despliegue sencillo en plataformas como netifly.
- Soporte para SSR e ISR (híbrido)
- Renderizado de páginas en tiempo de petición cuando se necesita contenido fresco.
- Incremental Static Regeneration (ISR) permite regenerar páginas según demanda.
- Data Layer unificado con GraphQL
- Todas las fuentes de datos se consultan mediante GraphQL.
- Evita mezclar múltiples llamadas rest o servicios aislados.
- Facilita la composición y el filtrado de datos complejos.
- Arquitectura basada en React
- Componentes reutilizables para el frontend.
- No usa un Motor de plantillas, sino lógica y vistas unificadas en JavaScript/JSX.
- Ecosistema de plugins
- Integración con imágenes optimizadas, fuentes, CMS, APIs, seguridad, rutas, etc.
- Extensión mediante gatsby-config.js sin duplicar lógica.
- Performance por defecto
- Optimización de imágenes.
- Prefetch de recursos.
- División automática de bundles.
- Rutas rápidas mediante hidración progresiva.
Arquitectura del flujo de datos
- Fuentes de datos (Sources)
- Markdown, JSON, APIs rest, bases de datos, servicios headless CMS.
- Todo se transforma en un “Gatsby Data Graph”.
- Transformers
- Procesan y normalizan contenido (Markdown a HTML, imágenes a formatos optimizados…).
- GraphQL Layer
- Punto único de acceso a todo el contenido.
- Las páginas consultan datos solo con las queries necesarias.
- Build System
- Genera HTML estático (SSG) o renderiza en tiempo real (SSR).
- Empaqueta assets optimizados.
- Runtime
- Se comporta como SPA una vez cargado el cliente.
- Navegación instantánea entre páginas.
Cuándo usar Gatsby
- Sitios que necesitan velocidad y SEO: blogs, documentación, landing pages.
- Proyectos basados en múltiples fuentes de contenido.
- Integraciones intensivas con CMS headless.
- Necesidad de un equilibrio entre SSG y SSR sin perder rendimiento.
Cuándo NO usar Gatsby
- Aplicaciones altamente interactivas orientadas a estado complejo, donde un framework puramente SPA puede ser más simple.
- Proyectos donde no se justifica la capa de GraphQL.
Comparación con otras arquitecturas
Gatsby vs SSG tradicional
- Gatsby ofrece:
- GraphQL para datos, en lugar de pipeline manual.
- Imagen optimizada automáticamente.
- Navegación estilo SPA.
Gatsby vs Motor de plantillas
- Los motores de plantillas generan HTML mediante plantillas estáticas (Ej: EJS, Liquid).
- Gatsby trabaja con componentes de react, lógica de estado y GraphQL.
Gatsby vs SPA
- SPA: renderiza todo en el cliente, peor para SEO sin SSR.
- Gatsby: renderizado previo del HTML, mejor SEO y rendimiento.
Gatsby vs SSR puro
- SSR puro genera páginas en cada petición.
- Gatsby permite SSR solo cuando es necesario y combina esto con SSG e ISR.
Instalación y configuración básica
Requisitos
- Node.js
- npm o yarn
- Conocimientos básicos de react
Instalación inicial
npm init gatsby
`
Estructura básica del proyecto
.
├─ gatsby-config.js # Configuración general y plugins
├─ gatsby-node.js # Lógica avanzada: creación de páginas, hooks
├─ src/
│ ├─ pages/
│ │ ├─ index.js
│ │ └─ about.js
│ ├─ components/
│ └─ styles/
└─ static/
Páginas y componentes
Creación de páginas
import * as React from "react"
export default function AboutPage() {
return (
<main>
<h1>Acerca de mí</h1>
<p>Esta es una página creada con Gatsby.</p>
</main>
)
}
Link interno optimizado
import { Link } from "gatsby"
<Link to="/about">Ir a About</Link>
Uso de GraphQL
Query en una página
import React from "react"
import { graphql } from "gatsby"
export default function BlogPage({ data }) {
return (
<div>
<h1>{data.site.siteMetadata.title}</h1>
</div>
)
}
export const query = graphql`
query {
site {
siteMetadata {
title
}
}
}
`
Consultas con variables (ejemplo)
query($slug: String!) {
markdownRemark(fields: { slug: { eq: $slug } }) {
html
frontmatter {
title
}
}
}
Plugins esenciales
Configuración básica (gatsby-config.js)
module.exports = {
siteMetadata: {
title: "Mi sitio Gatsby",
description: "Ejemplo básico con plugins",
},
plugins: [
"gatsby-plugin-image",
"gatsby-plugin-sharp",
"gatsby-transformer-sharp",
{
resolve: "gatsby-source-filesystem",
options: { name: "images", path: `${__dirname}/src/images/` },
},
],
}
Tipos de plugins
- Source: conectan con datos (Markdown, CMS, APIs).
- Transformer: procesan el contenido (markdown→HTML…).
- UI y rendimiento: imágenes, fuentes, cache, scripts.
- SEO: metadata automática, sitemap, robots, etc.
Integración con CMS
Gatsby se integra fácilmente con:
- Sanity
- Strapi
- Contentful
- WordPress como CMS headless
- Ghost
- Archivos Markdown locales
La capa GraphQL unifica todo antes del build.
Despliegue
- netifly
- Vercel
- Gatsby Cloud
- Render
- Cualquier hosting estático (SSG)
- SSR requiere plataforma compatible con serverless o Node.
Recursos
-
[Quick Start Gatsby](https://www.gatsbyjs.com/docs/quick-start/) - Documentación oficial: https://www.gatsbyjs.com/docs
¿Te gusta este contenido? Suscríbete vía RSS