DEV Community

Cover image for React y Next.js: Desenredando el Ecosistema de Desarrollo Web Moderno
Joaquín Gutiérrez
Joaquín Gutiérrez

Posted on

React y Next.js: Desenredando el Ecosistema de Desarrollo Web Moderno

Si estás empezando en el desarrollo web moderno, específicamente con JavaScript, probablemente te hayas encontrado con términos como React y Next.js, y te preguntes cuál es la relación entre ellos y por dónde deberías empezar. En este artículo, vamos a aclarar estos conceptos y establecer una ruta de aprendizaje clara.

¿Qué es React?

React es una biblioteca de JavaScript desarrollada por Facebook (ahora Meta) que se utiliza para construir interfaces de usuario (UI) interactivas. Es la base sobre la que se construyen muchas aplicaciones web modernas.

Fundamentos de React

  1. Componentes
    • Son bloques de construcción reutilizables
    • Pueden ser tan pequeños como un botón o tan grandes como una página completa
    • Ejemplo básico de un componente:
function Welcome({ name }) {
  return <h1>Hola, {name}</h1>;
}
Enter fullscreen mode Exit fullscreen mode
  1. Estado y Props
    • El estado (state) maneja datos que pueden cambiar
    • Las props son datos que se pasan de un componente padre a un hijo
    • Ejemplo de uso de estado:
import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Has hecho clic {count} veces</p>
      <button onClick={() => setCount(count + 1)}>
        Incrementar
      </button>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode
  1. Virtual DOM
    • React utiliza una representación virtual del DOM para optimizar las actualizaciones
    • Compara los cambios y actualiza solo lo necesario en el DOM real

¿Por qué usar React?

  • Reusabilidad: Los componentes pueden reutilizarse en diferentes partes de tu aplicación
  • Mantenibilidad: El código es más fácil de mantener y debuggear
  • Gran ecosistema: Enorme cantidad de bibliotecas y herramientas disponibles
  • Comunidad activa: Fácil encontrar soluciones a problemas comunes

¿Qué es Next.js?

Next.js es un framework construido sobre React que añade funcionalidades adicionales para crear aplicaciones web completas. Podríamos decir que Next.js es a React lo que un coche completo es a un motor: React es el motor (fundamental), y Next.js es el vehículo completo con todas sus características adicionales.

Características principales de Next.js

  1. Renderizado Híbrido
    • Renderizado del lado del servidor (SSR)
    • Generación estática (SSG)
    • Renderizado del lado del cliente (CSR)
    • Ejemplo de página con SSR:
// pages/users.js
export async function getServerSideProps() {
  const res = await fetch('https://api.example.com/users');
  const users = await res.json();

  return {
    props: { users }
  };
}

export default function Users({ users }) {
  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}
Enter fullscreen mode Exit fullscreen mode
  1. Sistema de Routing Basado en Archivos

    • Las rutas se crean automáticamente basadas en la estructura de archivos
    • No necesitas configurar un router manualmente
  2. Optimización de Imágenes

    • Optimización automática de imágenes
    • Carga diferida (lazy loading)
    • Ejemplo:
import Image from 'next/image';

function Profile() {
  return (
    <Image
      src="/profile.jpg"
      alt="Foto de perfil"
      width={500}
      height={300}
    />
  );
}
Enter fullscreen mode Exit fullscreen mode
  1. Zero Config
    • Configuración automática de Babel
    • Soporte incorporado para TypeScript
    • Hot Reloading incluido

¿Por dónde empezar?

Ruta de aprendizaje recomendada

  1. JavaScript Fundamentals

    • Variables, funciones, objetos
    • Promesas y async/await
    • ES6+ features (arrow functions, destructuring, etc.)
  2. React Basics

    • Componentes y JSX
    • Estado y props
    • Hooks básicos (useState, useEffect)
    • Ejemplo de aplicación básica:
import { useState, useEffect } from 'react';

function App() {
  const [data, setData] = useState([]);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => setData(data));
  }, []);

  return (
    <div>
      {data.map(item => (
        <div key={item.id}>{item.name}</div>
      ))}
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode
  1. Next.js
    • Configuración inicial
    • Routing
    • Data fetching
    • Deployment

Proyectos prácticos recomendados

  1. React: Todo List

    • Practicar manejo de estado
    • Eventos y formularios
    • Componentes reutilizables
  2. React: Blog simple

    • Routing con React Router
    • Comunicación entre componentes
    • Gestión de estado más compleja
  3. Next.js: Blog completo

    • SSR y SSG
    • API Routes
    • Optimización de imágenes
    • SEO

La relación entre React y Next.js no debe ser intimidante. React es la biblioteca fundamental que necesitas aprender primero, ya que Next.js se construye sobre ella. La documentación de React te menciona Next.js porque es una herramienta muy popular para construir aplicaciones React completas, pero no es necesaria para empezar.

Orden de aprendizaje sugerido:

  1. Domina los fundamentos de JavaScript
  2. Aprende React y construye algunas aplicaciones simples
  3. Cuando te sientas cómodo con React, introduce Next.js para aprovechar sus características adicionales

Recuerda que el aprendizaje es un proceso gradual. No te sientas abrumado por todas las herramientas y conceptos disponibles. Comienza con los fundamentos y ve construyendo sobre ellos paso a paso.

Recursos adicionales

Top comments (0)