Durante años, el mundo del desarrollo web estuvo dominado por los tres grandes frameworks frontend: React, Vue y Angular. Conocerlos era prácticamente el pase dorado para conseguir trabajo.
Aunque la evolución de las aplicaciones ligeras, el server-side rendering y la necesidad de evitar configuraciones pesadas como Webpack hicieron que la industria cambiara.
Hoy en día, los desarrolladores cuentan con múltiples opciones, y una de ellas es Enhance, un framework moderno que apuesta por un enfoque backend-first.
Esto significa que la lógica del servidor, los endpoints y la interacción con la base de datos son la prioridad, dejando el frontend en un segundo plano o integrándolo de manera opcional.
Si buscas prototipado rápido o trabajar en proyectos pequeños pero sólidos, Enhance es una elección ideal.
Existen frameworks ligeros como Astro, cuyo enfoque principal es el frontend: generar sitios estáticos o páginas renderizadas en el servidor optimizadas para la entrega de HTML, CSS y JavaScript.
En cambio, Enhance se centra en:
En resumen:
Para entender cómo funciona Enhance, vamos a crear una pequeña aplicación de notas (CRUD: crear, leer, actualizar y eliminar) con persistencia en base de datos.
mkdir notes-app
cd notes-app
npm init -y
npm install enhance better-sqlite3
notes-app/
├─ db.js # Conexión a SQLite
├─ api.js # Funciones CRUD
├─ server.js # Servidor HTTP
└─ index.html # Interfaz básica
const Database = require('better-sqlite3');
const db = new Database('myapp.db');
db.prepare(`
CREATE TABLE IF NOT EXISTS notes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
content TEXT
)
`).run();
module.exports = db;
const db = require('./db');
async function getNotes() {
return db.prepare('SELECT * FROM notes').all();
}
async function addNote({ title, content }) {
const info = db.prepare('INSERT INTO notes (title, content) VALUES (?, ?)').run(title, content);
return { id: info.lastInsertRowid, title, content };
}
async function editNote({ id, title, content }) {
db.prepare('UPDATE notes SET title = ?, content = ? WHERE id = ?').run(title, content, id);
return { id, title, content };
}
async function deleteNote({ id }) {
db.prepare('DELETE FROM notes WHERE id = ?').run(id);
return { success: true };
}
module.exports = { getNotes, addNote, editNote, deleteNote };
const http = require('http');
const fs = require('fs');
const path = require('path');
const { getNotes, addNote, editNote, deleteNote } = require('./api');
const server = http.createServer(async (req, res) => {
if (req.url === '/' && req.method === 'GET') {
const html = fs.readFileSync(path.join(__dirname, 'index.html'), 'utf-8');
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(html);
return;
}
if (req.url === '/notes' && req.method === 'GET') {
const notes = await getNotes();
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(notes));
return;
}
if (req.url === '/notes' && req.method === 'POST') {
let body = '';
req.on('data', chunk => body += chunk);
req.on('end', async () => {
const note = await addNote(JSON.parse(body));
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(note));
});
return;
}
if (req.url.startsWith('/notes/') && req.method === 'PUT') {
let body = '';
req.on('data', chunk => body += chunk);
req.on('end', async () => {
const id = parseInt(req.url.split('/')[2]);
const note = await editNote({ id, ...JSON.parse(body) });
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(note));
});
return;
}
if (req.url.startsWith('/notes/') && req.method === 'DELETE') {
const id = parseInt(req.url.split('/')[2]);
await deleteNote({ id });
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ success: true }));
return;
}
res.writeHead(404);
res.end('Not found');
});
server.listen(3000, () => console.log('Servidor corriendo en http://localhost:3000'));
Con HTML básico podemos añadir notas desde un formulario y verlas listadas en pantalla. Enhance permite conectar después frameworks frontend si quieres más interactividad.
Gracias a SQLite, puedes administrar la base directamente desde la terminal:
sqlite3 myapp.db
.tables
SELECT * FROM notes;
UPDATE notes SET title = 'Nuevo título' WHERE id = 1;
DELETE FROM notes WHERE id = 2;
.quit
Enhance es un framework que prioriza lo esencial: la lógica del backend y la rapidez en el desarrollo. Sus ventajas principales son:
Si lo que buscas es empezar a construir sin perder tiempo en configuraciones innecesarias, Enhance puede ser la base de tu próximo proyecto.
Si eres un amante de los videojuegos, estás de suerte. Hasta el 20 de noviembre…
La computación cuántica acaba de dar un salto gigante. John M. Martinis, recién galardonado con…
La biografía más vendida del cofundador de Apple, Steve Jobs; escrita por uno de los…
Hubo un tiempo en el que la “seguridad en el hogar” significaba confiar en un…
Elon Musk vuelve a romper todos los esquemas. Los accionistas de Tesla acaban de aprobar…
Los fans de Grand Theft Auto tendrán que esperar un poco más para volver a…