Fundamentos
Desarrollo web con Next.js: Aplicaciones listas para producción
Novedades y cambios clave en Next.js 15
Migración de Aplicaciones a NextJS 15: Paso a Paso
Haciendo tu proyecto más rápido
Refactorización de componentes en Next.js usando React Server Components
Conexión Directa a PostgreSQL desde React Server Components
Consumiendo datos de manera eficiente
Uso de ORM Drizzle para Gestión de Datos en Next.js
Consumo de APIs con React Query en Aplicaciones Next.js
Consumo de Datos: Secuencial, Paralelo y Preload en Next.js
Optimización de Carga con Suspense en Next.js y React
Escalabilidad y personalización
Internacionalización en NextJS: Middleware y Rutas Dinámicas
Internacionalización en Next.js: Traducción y Formato de Fechas y Números
Autenticación con Middleware en Next.js: Cookies y Redirección
Manejo de Cookies con Next.js para Autenticación Segura
Integración de Feature Flags en aplicaciones Next.js
Manejo de Errores en React Server Actions y Next.js
Observabilidad de Errores con Sentry en Aplicaciones Next.js
Características Adicionales y Herramientas
Sistema de Caché en Next.js: Opciones y Nuevas Funcionalidades
Seguridad en Next.js: Server Actions y Componentes en React
Seguridad de Cookies y Encriptación en Aplicaciones Web
Optimización del Rendimiento en Next.js: Medición y Mejoras Prácticas
Despliegue de Aplicaciones Next.js con Vercel y Docker
Despliegue de Next.js en Fly.io con Docker y PostgreSQL
Configurar variables de entorno con Docker y Flyo
Migración de PHP a Next.js para Mejorar SEO y Performance
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La integración de React Server Components con bases de datos como PostgreSQL ofrece una arquitectura potente y segura para manejar datos sensibles en aplicaciones modernas. Aquí exploramos cómo construir una aplicación con esta tecnología, realizando consultas SQL sin intermediarios y maximizando la seguridad y eficiencia de tu backend.
Configuración de la base de datos:
psql
para crear la base de datos y tablas. En este ejemplo:
CREATE DATABASE "expense_tracker";
\c expense_tracker
CREATE TABLE expenses (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
amount NUMERIC NOT NULL,
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Conexión en Next.js:
pg
:
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
});
module.exports = pool;
Consultas directas a SQL:
const getExpenses = async () => {
const result = await pool.query('SELECT * FROM expenses ORDER BY date DESC');
return result.rows;
};
const addExpense = async (name, amount) => {
await pool.query('INSERT INTO expenses (name, amount) VALUES ($1, $2)', [name, amount]);
};
import { getExpenses } from './db';
export default async function ExpenseTracker() {
const expenses = await getExpenses();
return (
Name Amount Date
{expenses.map(expense => (
{expense.name}
{expense.amount}
{expense.date}
))}
);
}
Uso de formularios y acciones:
'use client';
const handleSubmit = async (formData) => {
const name = formData.get('name');
const amount = formData.get('amount');
await fetch('/add-expense', { method: 'POST', body: JSON.stringify({ name, amount }) });
};
Revalidación de datos en Next.js:
import { revalidatePath } from 'next/cache';
await revalidatePath('/expense-tracker');
Aportes 0
Preguntas 1
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?